CSS PR

テキストを1文字ずつ表示するアニメーションをCSSとJSで作る

記事内に商品プロモーションを含む場合があります

JavaScriptとCSSを使って、テキストを1文字ずつ表示するアニメーションを作ってみました。

テキストを1文字ずつ表示するアニメーションをCSSとJSで作る

1文字ずつアニメーションを付ける系は、1文字ずつspanで加工必要があります。
ただ、HTMLで毎回spanで囲うのはめんどくさいので、JavaScriptで自動でspanを追加します。

ではまずHTMLから

<div class="js-text-anime">Hello, World!</div>

class「js-text-anime」をつけることで、今回のアニメーションを追加できます。

続いてCSS。
CSSでは、初期の文字を隠す+表示までの時間を指定します。
「transition」の数字は自由に変更してください。

.js-text-anime span {
    opacity: 0;
    transition: 0.5s;
}

JavaScriptで、1文字ずつspanで囲うのと、表示するアニメーションを追加します。
文字と文字の表示までの時間は、コメント部分を変更することで変更可能です。

document.addEventListener("DOMContentLoaded", function (event) {
            let elements = document.getElementsByClassName("js-text-anime");
            for (let i = 0; i < elements.length; i++) {
                animateText(elements[i]);
            }
        });

        function animateText(element) {
            let text = element.innerText;
            element.innerText = "";

            for (let i = 0; i < text.length; i++) {
                var span = document.createElement("span");
                span.innerText = text[i];
                element.appendChild(span);
            }

            let spans = element.getElementsByTagName("span");
            for (let j = 0; j < spans.length; j++) {
                (function (index) {
                    setTimeout(function () {
                        spans[index].style.opacity = 1;
                    }, index * 200); // 遅延時間を調整したい場合はここの数値を変更してください
                })(j);
            }
        }
ABOUT ME
シラツキ
Web制作会社で働くフロントエンドエンジニア(コーダー)。 ココナラでもお仕事募集しております。 HTML,CSS,JS,WordPress,EC-CUBE,Next.jsなど制作に役立つ情報を発信していきます。 webサイトの運営、修正、制作などお仕事も募集中! お気軽にご相談ください。