sp_menu

【JavaScript】タイピングアニメーションを実装する方法

【JavaScript】タイピングアニメーションを実装

今回はJavaScriptでタイピングアニメーションを実装する方法をご紹介します。

この記事は以下のお悩みを解決します。

  • ・タイピングアニメーションの作り方がわからない
  • ・JavaScriptライブラリを使わずにタイピングアニメーションを作る方法を知りたい
       

1. タイピングアニメーションとは

タイピングアニメーションはPCで文字を打ち込む時のように左から右に向かって文字が1文字ずつ表示されるアニメーションです。

タイピングアニメーションはHTML、CSS、JavaScriptで実装することができます。

JavaScriptのライブラリ「iTyped.js」を使っても作成できますが、今回はライブラリなしで実装する方法をご紹介します。

2. タイピングアニメーションの実装方法

タイピングアニメーションのコードは以下のようになります。「Run Pen」を押してアニメーションを確認してみてください。

See the Pen Untitled by Hiro (@Coffee1610) on CodePen.

2-1. HTMLのコード解説

<div class="typing-animation"></div>

1行目:<div class=”typing-animation”></div>

文字を表示するためのdiv要素を用意します。

2-2. CSSのコード解説

.typing-animation::after {
  content: '';
  border-right: 1px solid #333;
  margin-left: 2px;
  animation: flashing 1s linear infinite;
  opacity: 0;
}

@keyframes flashing {
  0%, 100% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
}

1-7行目:.typing-animation::after {~}

Codepenのエディタでアニメーションの動きを見ていただけるとわかると思うのですが、文字の右端に入力カーソルの縦棒が表示されています。typing-animationクラスの疑似要素で入力カーソルの縦棒を表現しています。

9-16行目:@keyframes flashing{~}

入力カーソルを点滅させるためのアニメーションを定義しています。

2-3. JavaScriptのコード解説

const typing = (el, sentence) => {
   //文字列を1文字ずつ取り出して処理を実行する
    [...sentence].forEach((char, index) => {
   //0.1秒ごとに文字を出力する
      setTimeout(() => {
        document.querySelector(el).textContent += char;
      }, 100 * ++index);
    });
 }

//関数を呼び出す
typing('.typing-animation', 'Hello! Nice to meet you!');

1-9行目:const typing = (el, sentence) => {~};

typing関数の第1引数のelは文字を表示するためのHTMLタグのクラス名、第2引数のsentenceは実際に表示する文字列です。

3-8行目:[…sentence].forEach((char, index) => {~});

[…sentence]はsentence(文字列)をスプレッド演算子を使って文字列を1文字ずつ入った配列を作成します。

ここではsentenceには「Hello! Nice to meet you!」という文字列が入るので[…sentence]は以下のようになります。

['H','e','l','l','o','!',' ','N','i','c','e',' ','t','o',' ','m','e','e','t',' ','y','o','u','!']

[…sentence]をforEachで1文字ずつ取り出して処理を実行します。第1引数のcharは取り出した文字、indexはインデックス番号が入ります。

5-7行目:setTimeout(() => {document.querySelector(el).textContent += char;}, 100 * ++index);

setTimeout(()=>{})では0.1秒ごとにdocument.querySelector(el).textContentでel(.typing-animation)にforEachで取り出した文字を1文字ずつ追加します。

14行目:typing(‘.typing-animation’, ‘Hello! Nice to meet you!’);

typing関数を呼び出しています。

3. まとめ

今回はJavaScrptでタイピングアニメーションを作る方法をご紹介しました。少しでもお役に立てたら幸いです。

関連記事