複数行タイプライター見出し

UI コンポーネント Medium #css #title #typewriter #hero

複数行タイプライター見出しは、2 行のキャッチコピーを上の行から順番に一文字ずつ表示する CSS だけのアニメーションです。JavaScript は使わず、各 h2 に overflow:hidden と white-space:nowrap を掛けたうえで、 width を 0 から目標値( 8em / 10em…

▶ プレビュー

解説

複数行タイプライター見出しは、2 行のキャッチコピーを上の行から順番に一文字ずつ表示する CSS だけのアニメーションです。JavaScript は使わず、各 h2overflow:hiddenwhite-space:nowrap を掛けたうえで、width を 0 から目標値(8em / 10em)まで steps() で刻んで広げることで「打ち込まれていく」見え方を作ります。右端の border-right がカーソルで、blink@keyframes で点滅します。2 行目は animation-delay で 1 行目の完了後に始まります。

使う場面とカスタマイズ

ヒーローのストーリーテリング型導入、サービス紹介の冒頭、ポートフォリオのオープニングなど、最初の数秒で世界観を伝えたい箇所に向きます。文字数を変えたら、steps() の数と widthem 値を実際の文字数に合わせて調整してください。ずれると途中で切れたり余白が出ます。

  • 速度は各 animation の秒数で調整(短いほど速い)
  • カーソル色は border-color、本文色は color
  • 等幅フォント前提なので可変幅フォントだと幅計算がずれやすい

使用例・適したシーン

  • ヒーローセクションのキャッチコピー
  • セクション見出し
  • 記事タイトル・ブログのリード
  • コーポレートサイトのキービジュアル

よくある質問

JavaScript は必要ですか。
不要です。表示は CSS の @keyframes と width アニメーションだけで成立します。ただし文字幅の計算が固定値(em 指定)なので、文言を変えたら steps() の数と幅を手動で合わせる必要があります。
3 行以上に増やせますか。
増やせます。h2 を追加し、それぞれに type と blink のアニメーションを delay をずらして割り当てます。前の行の表示時間を踏まえて各行の animation-delay を順に大きくしてください。
inspired by Storytelling hero patterns / 追加日:2026-05-11
← すべてのスニペットへ戻る