Add hero name fill animation
SVG text background of "Jonathan" in outline that slowly fills in on page load. Uses CSS fill-opacity animation (0 → 1 over 2s, 0.3s delay) so the stroke appears immediately and the fill bleeds in gradually. Light mode: zinc-200/300. Dark mode: zinc-800. Both stay recessive so the effect is atmospheric, not distracting. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -9,3 +9,20 @@
|
|||||||
body {
|
body {
|
||||||
font-family: var(--font-sans);
|
font-family: var(--font-sans);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@keyframes name-fill-in {
|
||||||
|
from { fill-opacity: 0; }
|
||||||
|
to { fill-opacity: 1; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.name-outline-fill {
|
||||||
|
fill: #e4e4e7; /* zinc-200 */
|
||||||
|
stroke: #d4d4d8; /* zinc-300 */
|
||||||
|
fill-opacity: 0;
|
||||||
|
animation: name-fill-in 2s cubic-bezier(0.4, 0, 0.2, 1) 0.3s forwards;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark .name-outline-fill {
|
||||||
|
fill: #27272a; /* zinc-800 */
|
||||||
|
stroke: #27272a; /* zinc-800 */
|
||||||
|
}
|
||||||
|
|||||||
+22
-1
@@ -2,7 +2,28 @@ import Link from 'next/link'
|
|||||||
|
|
||||||
export default function Hero() {
|
export default function Hero() {
|
||||||
return (
|
return (
|
||||||
<section className="mx-auto flex min-h-[72vh] max-w-5xl flex-col items-center justify-center px-6 py-32 text-center">
|
<section className="relative overflow-hidden mx-auto flex min-h-[72vh] max-w-5xl flex-col items-center justify-center px-6 py-32 text-center">
|
||||||
|
|
||||||
|
{/* Background name — outline fills in on load */}
|
||||||
|
<svg
|
||||||
|
aria-hidden="true"
|
||||||
|
className="pointer-events-none absolute inset-0 h-full w-full"
|
||||||
|
preserveAspectRatio="xMidYMid meet"
|
||||||
|
>
|
||||||
|
<text
|
||||||
|
x="50%"
|
||||||
|
y="55%"
|
||||||
|
textAnchor="middle"
|
||||||
|
dominantBaseline="middle"
|
||||||
|
fontFamily="var(--font-geist-sans), sans-serif"
|
||||||
|
fontSize="22vw"
|
||||||
|
fontWeight="700"
|
||||||
|
strokeWidth="1"
|
||||||
|
className="name-outline-fill"
|
||||||
|
>
|
||||||
|
Jonathan
|
||||||
|
</text>
|
||||||
|
</svg>
|
||||||
|
|
||||||
{/* Eyebrow label */}
|
{/* Eyebrow label */}
|
||||||
<div className="mb-10 flex items-center gap-4">
|
<div className="mb-10 flex items-center gap-4">
|
||||||
|
|||||||
Reference in New Issue
Block a user