速報

デイリー馬三郎で15万件超に情報漏えいのおそれ|全会員のパスワードをリセット

CATEGORY

【JavaScript】タイプライター風に文字列を一文字ずつ出力する

※本ページのリンクにはプロモーションが含まれています。

【JavaScript】タイプライター風に文字列を一文字ずつ出力する

目次

本記事では、JavaScriptでタイプライター風に文字列を一文字ずつ出力する方法をご紹介しています。

完成イメージは下記の通りです。「Run Pen」をクリックすると実際の動きをご確認いただけます。

DEMO

See the Pen Typewriter Animation | JavaScript by ryohei (@intotheprogram) on CodePen.

実行すると、要素の中に文字列が一文字ずつ出力されるかと思います。

タイプライター風に文字列を表示したいけどライブラリを使うまでもないし……何か良い方法ないかな?

上記の疑問にお答えできればと思います!

では、解説していきます。

スポンサーリンク

文字列を出力する要素を作成する

まずはタイプライター風にエキスつを表示する要素を作成します。JS側で「id」で要素を取得するので、適当に名前を付けておきます。下記のサンプルでは「typewriter」としています。

HTML

<span id="typewriter"></span>

以上でHTML要素の作成は完了です。続いてスクリプトを作成していきます。

タイプライター風に文字列を表示するスクリプトを作成する

本記事で作成する処理の流れは下記のようになるかと思います。

  • 文字列を出力する要素を指定する
  • タイプライター風に表示する文字列を指定する
  • 文字列を出力する要素を取得する
  • 文字列を一文字ずつ分割して配列に格納する
  • 配列内の文字を一定の秒間隔で一文字ずつ指定要素に出力する

上記の流れをイメージしつつスクリプトを作成します。使いまわすことができて、拡張しやすいように組んでみます。

JS

const typewriter = (param) => {

let el = document.querySelector(param.el); let speed = param.speed; let string = param.string.split("");

string.forEach((char, index) => { setTimeout(() => { el.textContent += char; }, speed * index); }); };

typewriter({ el: "#typewriter", //要素 string: "Lorem ipsum dolor sit amet, consectetur adipiscing elit", //文字列 speed: 50 //速度 });

以上でタイプライター風に文字列を一文字ずつ出力することができます。

使い方は簡単で、実行時にパラメータに要素、文字列、スピードを指定するだけです。内部ではsplit()で文字列を一文字ずつ分割して、分割した文字列をsetTimeout()で時間をずらして要素に入れる処理を実行しています。

最後に文字列を入力しているように見せるためにカーソルを付けてみましょう。

スポンサーリンク

出力する文字列の末尾にカーソルを付ける

カーソルはCSSの擬似要素で作ります。contentの記号を変えるだけで済みますし、スタイルも思い通りです!

#typewriter::after {
    content: "|";
    animation-name: blink;
    animation-duration: 1s;
    animation-iteration-count: infinite;
}

@keyframes blink { from { opacity: 0; } to { opacity: 1; } }

以上でカーソルの設定は完了です。必要に応じて使用しましょう!

最後に

今回文字列をタイプライター風に出力する処理を自前で組んでみました。もしライブラリが使用できるのであれば下記の記事でご紹介している「iTyped.js」がおすすめです。設定も簡単で必要な機能は一通り揃っていますので、ぜひ試してみてくださいね!

以上、JavaScriptでタイプライター風に文字列を一文字ずつ出力する方法のご紹介でした!

この記事を書いた人

Ryohei

Webエンジニア / アプリ開発者 / 技術ブログ運営者

福岡のWeb制作会社に勤務するWebエンジニアです。10年以上にわたりWeb制作・開発に携わり、ヒアリングや進行管理から、コーディング、CMSの構築、システム開発、サーバーの構築・保守・運用まで、Webサイト制作の工程を幅広く担当しています。Webサイトは、これまでに100以上の構築・保守を手がけてきました。

個人でもWebサイトの制作・改修やWebアプリの開発・運用を行い、AIを活用した開発にも取り組んでいます。近年はWebセキュリティにも注力しています。

2015年から技術メディア「Into the Program」を運営し、実務や開発で得た知識をもとに、プログラミングの実装方法やWebサイトの運用・セキュリティ情報を発信しています。

主な分野
Webサイト構築・保守・運用 / HTML/CSS / JavaScript / PHP / WordPress / サーバー構築・保守・運用 / アプリ開発 / セキュリティ対策
資格・試験合格
情報セキュリティマネジメント試験
基本情報技術者試験
AWS認定ソリューションアーキテクト アソシエイト
PHP8技術者認定ウィザード
メディア運営
2015年〜

記事の作成・更新について

セキュリティ記事は、ベンダーの公式アドバイザリやCVE・JVNなどの一次情報を参照し、出典と情報確認日を記載します。実環境での検証を行った場合は、その環境と確認範囲を明示します。重要な追加情報や誤りを把握した場合は、内容を確認して追記・訂正します。

関連する記事

おすすめの書籍

キーワードから探す

スポンサーリンク