Vissza az animációkhoz
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
HTML
<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>
CSS
.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);
    }
}
JavaScript
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);
    });

});