プログラミング初心者でも簡単!JavaScriptで作るテキストタイピングアニメーション

プログラミング初心者にとって、実際に動くものを作ってみることは、プログラミングスキルを向上させるために必要です。当サイトではそのネタを他の記事でも提供しています。今回はネタとして、JavaScriptでテキストタイピングアニメーションを実装したので紹介します。

当記事を読むメリット

当サイトで紹介するテキストタイピングアニメーションの大きな特徴は、jQueryや外部ライブラリを一切使用せずに実現されている点です。他の多くのサイトやチュートリアルでは、このようなアニメーションの実装にjQueryやさまざまな外部ライブラリを利用することが一般的です。しかし、当サイトのアプローチでは、純粋なHTML、CSS、JavaScriptのみで、同じくらい魅力的で機能的なアニメーションを作成しています。
jQueryや外部ライブラリを一切使用しない実装!

実装をした際の表示

ウェブサイトの初見の印象は非常に重要です。面白くて、目を引くようなコンテンツは、訪問者の関心を引き付け、より長くサイトに留まってもらうことができます。テキストタイピングアニメーションは、そのようなインパクトを与えるのに最適な方法の一つです。シンプルながらも効果的なこのアニメーションは、訪問者の注意を引き、メッセージを際立たせます。

タイピングアニメーションの動作

このアニメーションでは、ウェブページ上にテキストが1文字ずつ現れる様子が表示されます。まるで手で打ち込まれているかのように、テキストが順番に出現し、リアルタイムでの入力を再現します。

カーソルの点滅効果

文字の入力中および入力後、テキストの末尾に点滅するカーソルが現れます。このカーソルは、テキストの入力が完了したことを視覚的に示し、ウェブページに動きを加える効果があります。

ソースコード例

以下に示すのは、このタイピング効果を実現するためのHTML、CSS、JavaScriptのコード例です。

HTMLソースコード例

HTMLでは、単純なdiv要素を作成し、IDをtypingTextとしています。これはJavaScriptで操作するためのidとしています。

<div id="typingText"></div>

CSSソースコード例

CSSでは、テキストのスタイルを設定し、カーソルのアニメーションを定義しています。@keyframesでカーソルの点滅効果を作成し、typingCursorクラスでこれを適用しています。

#typingText {
    font-size: 24px;
    line-height: 1.5;
}
#typingCursor {
    display: inline-block;
    width: 1px;
    height: 36px;
    margin-left: 10px;
    vertical-align: middle;
    background-color: #333;
    animation: blinkCursor 0.75s steps(5) infinite;
}
@keyframes blinkCursor {
    from {
        background-color: #333;
    }
    to {
        background-color: transparent;
    }
}

step(5)について

steps(5)は、animationプロパティのサブプロパティである「animation-timing-function」に指定できる値です。通常、「animation-timing-function」は「ease」や「ease-in」などを指定するイメージがありますが、steps()関数の使用することができます。steps()関数を使用すると、アニメーションを特定の回数の「ステップ」に分けて進めることができます。

steps()関数内で使用する数字ですが、@keyframes内でfromとtoの2ステップなので、最低限2以上を指定する必要があります。数字を変化させてもわかりやすく大きな変化はないですが、ただ数字が大きめの方が、タイピングアニメーションらしくなるので、色々な数字を試してみて、ご自身が良いと思う数値を見つけていただければと思います。

JavaScriptソースコード例

タイピングアニメーションを実装していますが、ページを読み込んだ時に、アニメーションする要素が画面内に入っているか、入っていないかについても考慮しています。

document.addEventListener('DOMContentLoaded', function () {
    // アニメーションで表示したいテキストを設定
    const text = "ここに長いテキストを入力します。テキストが長くなると自動的に折り返され、カーソルが適切に表示されるようになります。";
    const typingText = document.getElementById('typingText');
    // 表示する文字の位置を追跡
    let index = 0;
    // アニメーションがすでに開始されたかどうか
    let started = false;

    // 1文字ずつテキストを表示するアニメーションを実行
    function typeText() {
        if (index < text.length) {
            typingText.innerHTML = text.substring(0, index) + '<span id="typingCursor"></span>';
            index++;
            setTimeout(typeText, 100);
        } else {
            typingText.innerHTML = text + '<span id="typingCursor"></span>';
        }
    }

    // 指定された要素が画面内にあるかどうかを判定
    function isVisible(elem) {
        const rect = elem.getBoundingClientRect();
        return rect.top < window.innerHeight && rect.bottom >= 0;
    }

    // ページ読み込み時に「typingText」が画面内にあれば、アニメーションを発動する
    function startAnimationIfVisible() {
        if (!started && isVisible(typingText)) {
            started = true;
            typeText();
        }
    }

    startAnimationIfVisible();

    // スクロールして「typingText」が画面内に入ったときに、アニメーションを発動する
    window.addEventListener('scroll', function () {
        startAnimationIfVisible();
    });
});

まとめ

JavaScriptを使ったテキストタイピングアニメーションは、ウェブサイトの見出しや重要なメッセージにこの効果を使用することで、訪問者の興味を引き、メッセージを強調することが可能です。今回の記事を通じて、基本的なHTML、CSS、JavaScriptのスキルアップさせ、ご自身のポートフォリオや、実際のWeb制作などに生かしていってください!

>お問い合わせはこちら

お問い合わせはこちら