Utwórz projekt ↗
CSS / JS · KOD NA LICENCJI MIT

Animacja liter

Tekst, który robi dobre pierwsze wrażenie.

Edytuj HTML, CSS i JS ↗ Otwórz konfigurator ↗

Gdzie wykorzystać ten przykład?

Elementy strony dopasowane do własnego projektu. Wariant „Animacja liter” możesz dopasować do kolorów i treści swojej strony.

Jak działa ten efekt?

HTML określa strukturę przykładu, CSS jego wygląd, a JavaScript — jeżeli występuje — odpowiada za interakcję. Podgląd pokazuje domyślne ustawienia, które możesz zmienić w edytorze.

Jak dodać go na stronę?

  1. Otwórz przykład w edytorze i podmień tekst oraz kolory.
  2. HTML wstaw w miejscu, w którym ma pojawić się element.
  3. CSS przenieś do arkusza stylów swojej strony. Reguły body z podglądu dopasuj do własnego układu.
  4. JavaScript uruchom po załadowaniu elementów HTML, na przykład przed zamknięciem </body>.
  5. Sprawdź działanie na telefonie, klawiaturą i z własną treścią.

Na co zwrócić uwagę?

Podmień treści i odnośniki. Kod działa w przeglądarce; formularze wymagają osobnej obsługi wysyłania po stronie serwera.

Co możesz zmienić w konfiguratorze?

Twój tekst, Rodzaj animacji, Kolor tekstu, Rozmiar tekstu, Odstęp między literami, Klasa CSS. W edytorze kodu możesz dodatkowo zmienić całą strukturę i zachowanie przykładu.

Gotowy kod: Animacja liter

HTML

<h2 class="letters">Hello, world.</h2>

CSS

*{box-sizing:border-box}body{margin:0;padding:35px 24px;background:#f4f5ef;color:#293322;font:15px/1.7 Arial,sans-serif;min-height:100vh;display:grid;place-items:center}button,input{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #738858;outline-offset:4px}h2,h3,p{margin-top:0}[hidden]{display:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.letters{
    margin:0;
    color:#e95b30;
    font-size:48px;
    line-height:1.3;
    text-align:center;
}
.letters .word{display:inline-block;white-space:nowrap}
.letters .letter{
    display:inline-block;
    animation:letter-show .7s cubic-bezier(.16,1,.3,1) both;
    animation-delay:calc(var(--i) * 60ms);
}
@keyframes letter-show{
    from{opacity:0;transform:translateY(25px) rotate(7deg);filter:blur(4px)}
    to{opacity:1;transform:none;filter:blur(0)}
}
@keyframes letter-wave{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
@media(prefers-reduced-motion:reduce){.letters .letter{animation:none}}

JavaScript

document.querySelectorAll('.letters').forEach(el => {
    let i = 0;
    const text = el.textContent;
    el.textContent = '';
    text.split(/(\s+)/).forEach(part => {
        if(/\s/.test(part)){
            el.append(document.createTextNode(part));
            return;
        }
        const word = document.createElement('span');
        word.className = 'word';
        [...part].forEach(char => {
            const letter = document.createElement('span');
            letter.className = 'letter';
            letter.textContent = char;
            letter.style.setProperty('--i', i++);
            word.append(letter);
        });
        el.append(word);
    });
});

Podobne przykłady