scaleを使った、hoverでアンダーラインが中心から広がっていくアニメーションを実装するコード
PR
CSS transforms creating a nice hover effect for links
リンクには既定値で、最初からアンダーラインが表示されるようになっています、逆にマウスオーバーすることで表示させるっていう使い方も結構されます。今回のコードは、text-decorationを使ったものではなく 擬似要素を使って線を表現しています、そのことによってより柔軟な表現が可能になります
コードの解説と実装方法
アンダーラインの部分は a の擬似要素 after を使って作られています。
それを transition で変化させています
変化する基準は scaleです。 scaleは拡大縮小を行うことが出来ます
このコードでは、X軸に対して拡大縮小します。つまり横方向のみに伸びたり縮んだりして見えるようになります
これをマウスオーバーすることで動作するようにしています。
コード SCSS版
a { position: relative; display: inline-block; padding: .4em; text-decoration: none; &::after { content: ''; position: absolute; bottom: 0; left: 0; width: 100%; height: 1px; transform: scaleX(0); background-color: red; transition: all .3s ease; } &:hover { &::after { transform: scaleX(1); } } }
CSS版
a { position: relative; display: inline-block; padding: .4em; text-decoration: none; } a::after { content: ''; position: absolute; bottom: 0; left: 0; width: 100%; height: 1px; -webkit-transform: scaleX(0); -ms-transform: scaleX(0); transform: scaleX(0); background-color: red; -webkit-transition: all .3s ease; transition: all .3s ease; } a:hover::after { -webkit-transform: scaleX(1); -ms-transform: scaleX(1); transform: scaleX(1); }
擬似要素は、親要素のaタグと同じ長さになるように width を 100% に
position で真下に来るようにしています。 position の位置が left、bottom になっていても scale の特性によって 要素の中心を基準に拡大、縮小するのをうまく使って表現しています
PR
COMMENT