CSSのみで文字送りの実装
いろはにほへと ちりぬるを
わかよたれそ つねならむ
うゐのおくやま けふこえて
あさきゆめみし ゑひもせすん
わかよたれそ つねならむ
うゐのおくやま けふこえて
あさきゆめみし ゑひもせすん
- ソースコード調整
- 記事公開
CSSアニメーションを利用した文字送りです。
使えるか使えないかと問われると多分使えない。普通にjavaScriptを使おう。
iOS系だと複数行には対応していません。
source code
基本
HTML
- <span class="text_fader">テキスト</span>
CSS
- @supports (-webkit-background-clip:text) or (background-clip:text) {
- .text_fader {
- --length: 4;
- --speed: 100ms;
- padding: 0.2em 0;
- background: linear-gradient(currentColor 0 100%) no-repeat 0 0 / 0 100%;
- -webkit-background-clip: text;
- background-clip: text;
- -webkit-text-fill-color: transparent;
- text-fill-color: transparent;
- animation: text_fader calc( var(--length) * var(--speed) ) steps(var(--length),end) 0s 1 both;
- }
- @keyframes text_fader {
- 0% { background-size: 0 100%}
- 100% { background-size: 100% 100%}
- }
- }
調整用情報
4
:テキスト字数
100ms
:一字あたりの表示時間
注意点
テキスト部分で半角全角文字の併用や、文字幅に差のあるフォントを使用すると表示がぶれる恐れがあります。(後述『仕組みについて』の調整部分で色々試していただければ視覚的にも分かり易いかと思います)
文字幅の差については調整が面倒なようならfont-family: monospace;
等指定で対応してください。
何をやっているのか
-
いろはにほへと内容を書いたインライン要素を用意
-
いろはにほへと
linear-gradient
関数で文字色と同色に塗り潰した背景画像を用意 -
いろはにほへと背景画像のサイズが変わるアニメーションを付与
-
いろはにほへとアニメーション進行割合を段階制に(文字数での分割)
-
いろはにほへと
background-clip
で背景の表示範囲を文字部分のみに指定 -
いろはにほへと
text-fill-color
で文字色を透明に指定