Skip to content

Commit 2da1296

Browse files
authored
fix(website): animate the full CTA border (#41)
1 parent 2e992c4 commit 2da1296

2 files changed

Lines changed: 34 additions & 91 deletions

File tree

website/theme/components/HomeLayout.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -677,7 +677,7 @@ function ArrowIcon() {
677677
function AnimatedButtonBorder() {
678678
return (
679679
<span aria-hidden="true" className="a3s-button-orbit">
680-
<span className="a3s-button-comet" />
680+
<span className="a3s-button-orbit-gradient" />
681681
</span>
682682
);
683683
}

website/theme/index.css

Lines changed: 33 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -290,114 +290,57 @@ body {
290290
.a3s-button-orbit {
291291
position: absolute;
292292
z-index: 2;
293-
overflow: visible;
293+
box-sizing: border-box;
294+
overflow: hidden;
295+
padding: 2px;
296+
border-radius: 10px;
297+
filter: drop-shadow(0 0 3px rgba(69, 221, 255, 0.72))
298+
drop-shadow(0 0 6px rgba(104, 72, 255, 0.58));
294299
inset: -2px;
300+
-webkit-mask:
301+
linear-gradient(#000 0 0) content-box,
302+
linear-gradient(#000 0 0);
303+
mask:
304+
linear-gradient(#000 0 0) content-box,
305+
linear-gradient(#000 0 0);
295306
pointer-events: none;
307+
-webkit-mask-composite: xor;
308+
mask-composite: exclude;
296309
}
297310

298-
.a3s-button-comet {
311+
.a3s-button-orbit-gradient {
299312
position: absolute;
300-
top: 0;
313+
top: 50%;
301314
left: 50%;
302-
width: 42px;
303-
height: 4px;
304-
border-radius: 999px;
305-
background: linear-gradient(
306-
90deg,
307-
transparent 0%,
308-
rgba(112, 56, 255, 0.72) 18%,
309-
#45ddff 52%,
310-
#fff 80%,
311-
rgba(255, 255, 255, 0) 100%
315+
width: 220%;
316+
aspect-ratio: 1;
317+
background: conic-gradient(
318+
from 0deg,
319+
#fff 0deg,
320+
#45ddff 20deg,
321+
#7244ff 64deg,
322+
#5d2cff 150deg,
323+
#8745ff 246deg,
324+
#45ddff 334deg,
325+
#fff 360deg
312326
);
313-
box-shadow:
314-
0 0 4px rgba(69, 221, 255, 0.95),
315-
0 0 10px rgba(104, 72, 255, 0.72);
316327
transform: translate(-50%, -50%);
317328
transform-origin: center;
318-
will-change: top, left, transform;
329+
will-change: transform;
319330
}
320331

321-
.a3s-button-comet::after {
322-
position: absolute;
323-
top: 0;
324-
right: 15%;
325-
width: 7px;
326-
height: 4px;
327-
border-radius: inherit;
328-
background: #fff;
329-
box-shadow: 0 0 5px #fff;
330-
content: '';
331-
}
332-
333-
.a3s-button--primary:hover .a3s-button-comet,
334-
.a3s-button--primary:focus-visible .a3s-button-comet {
335-
animation: a3s-button-comet-orbit 2.2s linear infinite;
332+
.a3s-button--primary:hover .a3s-button-orbit-gradient,
333+
.a3s-button--primary:focus-visible .a3s-button-orbit-gradient {
334+
animation: a3s-button-full-border-orbit 2.2s linear infinite;
336335
}
337336

338337
.a3s-button--primary:focus-visible {
339338
outline: 2px solid #d9e7ff;
340339
outline-offset: 4px;
341340
}
342341

343-
@keyframes a3s-button-comet-orbit {
344-
0% {
345-
top: 0;
346-
left: 50%;
347-
transform: translate(-50%, -50%) rotate(0deg);
348-
}
349-
350-
16% {
351-
top: 0;
352-
left: calc(100% - 11px);
353-
transform: translate(-50%, -50%) rotate(0deg);
354-
}
355-
356-
21% {
357-
top: 11px;
358-
left: 100%;
359-
transform: translate(-50%, -50%) rotate(90deg);
360-
}
361-
362-
31% {
363-
top: calc(100% - 11px);
364-
left: 100%;
365-
transform: translate(-50%, -50%) rotate(90deg);
366-
}
367-
368-
36% {
369-
top: 100%;
370-
left: calc(100% - 11px);
371-
transform: translate(-50%, -50%) rotate(180deg);
372-
}
373-
374-
66% {
375-
top: 100%;
376-
left: 11px;
377-
transform: translate(-50%, -50%) rotate(180deg);
378-
}
379-
380-
71% {
381-
top: calc(100% - 11px);
382-
left: 0;
383-
transform: translate(-50%, -50%) rotate(270deg);
384-
}
385-
386-
81% {
387-
top: 11px;
388-
left: 0;
389-
transform: translate(-50%, -50%) rotate(270deg);
390-
}
391-
392-
86% {
393-
top: 0;
394-
left: 11px;
395-
transform: translate(-50%, -50%) rotate(360deg);
396-
}
397-
398-
100% {
399-
top: 0;
400-
left: 50%;
342+
@keyframes a3s-button-full-border-orbit {
343+
to {
401344
transform: translate(-50%, -50%) rotate(360deg);
402345
}
403346
}

0 commit comments

Comments
 (0)