最近よく使うcssを使ったアンダーラインが出た後に文字がニョキッと出てくるアニメーション
自分が担当する案件では最近アイキャッチ部分にスライドショーをほとんど使わなくなり、アンダーラインが出た後に文字がニョキッと出てくるアニメーションを使って文字を動かすことが増えてきました
そんな文字を動かすアニメーションを紹介してみます
この記事の目次
文字と背景のアニメーション
文字と背景のアニメーションと表現していますが、実際に見てみないとわからないと思うのでまずはデモを用意しています
「動かす」をクリックでアニメーションが開始し、「もどす」をクリックすると一旦リセットされるので繰り返し動きが確認できます。
基本となるコード
今回のサンプルで準備したコードはこちらになります
HTMLでは全体をクラス「text」をつけたdiv要素で囲み、一行をクラス「text_underline」をつけたdiv要素で囲み、更にクラス「text_move」をつけたspan要素で囲みます
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<div class="text"> <div class="text_underline"> <span class="text_move">気候変動というような</span> </div> <div class="text_underline"> <span class="text_move">大きな問題は</span> </div> <div class="text_underline"> <span class="text_move">funでありcoolであり</span> </div> <div class="text_underline"> <span class="text_move">sexyでなければならない</span> </div> </div> |
cssのコードは個人的に肝になっているかなというところだけ紹介しておきますが、それぞれ確認していただければ問題ないかと思います
、全体を囲んでいる「.text」にflex系のプロパティを使って縦並びにしつつ、幅を文章量と同じにしています
アンダーラインのアニメーションは「.text_underline」の擬似要素を用意し、この擬似要素に単色のグラデーションを指定し、「background-size」プロパティで指定しています。
「height」プロパティと「background-size」プロパティで予めラインの高さを指定しておき、ラインの幅は0%から100%になるようにキーフレームアニメーションを設定します
下から文字が出てくるアニメーションは「.text_move」に指定していきます
こちらは「position」プロパティを使ってキーフレームアニメーションで動かしているだけなので問題ないかと思いますが、動かす量はフォントの種類やサイズ、line-heightによって変わるので都度調整していくしかありません
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
@keyframes underline { 0% { background-size: 0% 100%; } 100% { background-size: 100% 100%; } } @keyframes move { 0% { bottom: -34px; } 100% { bottom: -8px; } } .text { display: flex; flex-direction: column; align-items: flex-start; } .text_underline { overflow: hidden; height: 30px; position: relative; flex-shrink: 0; } .text_move { font-size: 20px; font-weight: bold; line-height: 1; position: relative; bottom: -34px; left: 0; animation: move .4s .8s linear both; } .text_underline::after { content: ''; display: block; width: 100%; height: 3px; background-image: linear-gradient(90deg, #000 0%, #000 100%); background-size:0% 100%; background-repeat: no-repeat; background-position: left bottom; position: absolute; bottom: 0px; animation: underline .4s linear both; } |
これだけなんですが、jsと組み合わせていけばアイキャッチ部分以外でも使えるので、どのサイトでも使っていてマンネリ化しつつある下からフェードインとは違ったアニメーションにすることも可能かと思われます。