テキストをランダムに1文字づつ表示するアニメーションの実装方法について解説しています。オープニングなどに使うと伝えたいテキストに視線を誘導できそうです。
実装例
下記が実装例です。
テキストを読み込んだ直後にランダムに1文字づつ表示させています。もう一度実行したい場合は、右下にある「Return」ボタンをクリックしてください。
あまりに長いテキストだと視線が忙しくなるので、実装例のように10〜20文字程度のコピーにおすすめです。
解説
HTMLは次のとおりです。
data-char-span
がテキストを1文字づつspanタグで囲うための属性で、data-text-animation="fadeIn"
がテキストアニメーション設定用の属性となります。
CSSのアニメーションに関する部分は次のとおりです。
アニメーションの前後でopacity
を変化させています。今回はopacity
だけですが、その他のプロパティを設定することで表現の幅が広がりそうです。
JavaScriptの処理を言語化
JavaScriptのテキストアニメーションに関する部分は以下のとおりです。
各行の実行内容はコメントに記載の通りです。
NodeListを配列に変換
querySelectorAll
で取得できる要素はNodeListのため、Array.from
で配列に変換しています。コードの後半で登場するsplice()
メソッドを使用するためです。
ランダムな整数を生成
Math.random()
とMath.floor()
関数を使用して、配列の要素数分のランダムな整数を生成しています。例えば要素が8個ある場合、0〜7のどれかの数字がrandomIndexに代入されます。
繰り返し関数を呼び出し
配列の要素数が0になるまで繰り返しaddActiveClassRandomly
を呼び出しています。
各文字の出現するタイミングをコントロールするには、setTimeout
の第二引数のミリセカンドを変更すればOKです。
参考サイト