Szöveganimációk
Középről szétterjedő betűk
Élő előnézet – az animáció teljes méretben.
Élő előnézet
HTML · CSS · JS
<div class="we-text-center-card">
<h2 class="we-text-center" data-text="Fedezd fel a világot">
Fedezd fel a világot
</h2>
</div>
.we-text-center-card {
display: inline-block;
padding: 32px 42px;
background: #f4f1e9;
border: 1px solid rgba(0, 0, 0, .08);
border-radius: 18px;
box-shadow:
0 18px 45px rgba(0, 0, 0, .22);
overflow: hidden;
}
.we-text-center {
margin: 0;
color: #111111;
font-family: "Bodoni Moda", Georgia, serif;
font-size: clamp(34px, 5.5vw, 68px);
font-weight: 500;
line-height: 1.08;
letter-spacing: .01em;
white-space: normal;
}
.we-text-center .we-char {
display: inline-block;
opacity: 0;
transform:
scale(.15)
translateY(10px);
filter: blur(8px);
animation:
weCenterChar .7s cubic-bezier(.22,1,.36,1) forwards;
}
@keyframes weCenterChar {
0% {
opacity: 0;
transform:
scale(.15)
translateY(10px);
filter: blur(8px);
}
45% {
opacity: 1;
filter: blur(1px);
}
100% {
opacity: 1;
transform:
scale(1)
translateY(0);
filter: blur(0);
}
}
document.querySelectorAll(".we-text-center").forEach(element => {
const text = element.dataset.text || element.textContent.trim();
element.textContent = "";
const characters = [...text];
const center = (characters.length - 1) / 2;
characters.forEach((character, index) => {
const span = document.createElement("span");
span.className = "we-char";
span.textContent = character === " " ? "\u00A0" : character;
const distance = Math.abs(index - center);
span.style.animationDelay = `${distance * 0.055 + 0.15}s`;
element.appendChild(span);
});
});