こんにちは!セミマサです。今回はJavaScriptを使ってタグ内の文字を1文字ずつ表示してみました。
デモサイト
今回のデモサイトです。
ソースコード
HTML
1 2 3 4 5 |
<section> <div class="text-box"> <p id="text">今日もwebでセミが鳴く</p> </div> </section> |
今回のHTMLです。
id:textを付与したp要素の中に表示したい文字を入れておきます。
CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
.text-box{ display: flex; justify-content: center; align-items: center; flex-direction: column; width: 100vw; height: 50vh; } #text{ font-size: 1.5rem; } @media screen and (max-width: 480px) { #text{ font-size: 1rem; } } |
今回のCSSです。
JavaScript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
const text = document.getElementById("text").textContent; document.getElementById("text").textContent = ""; count = text.length; const wait = 200; const textWriter = (_text)=>{ let nowText = document.getElementById("text").textContent; let nextText; if(nowText.length < count){ nextText = _text.charAt(nowText.length); }else{ nowText = ""; nextText = ""; } document.getElementById("text").textContent = nowText + nextText; }; setInterval("textWriter(text)",wait); |
今回のスクリプトです。
・定数textにp要素内のテキストを代入し、p要素内のテキストを空にします。
・グローバル変数countに定数textの文字数を代入します。
・setInterval関数を用いて、textWriter関数を繰り返し実行します。実行間隔は定数waitで指定します。
textWriter関数
今回のメインとなる関数です。
①:変数nowTextにp要素内の現在のテキストを代入します。
②:nowTextの文字数がグローバル変数count未満の場合、変数nextTextに次に表示する文字を代入します。全文字表示したらnowTextを空にしてループさせます。
③:nowTextにnextTextを連結したものを表示します。
おわりに
無事動くものが作れました。