borderに対してtransitionが効かない時
例えばborder-bottom
を使用して下線を表示させる際にtransition
を使ってアニメーションさせたい場合、a:hover
のみにborder-bottom: 1px solid #111;
といった記述にしているとtransition
は効かない。
というのも、transition
は要素から要素の状態の変化を動的に設定するので、その始まりのプロパティがないとうまくアニメーションがされない。
NG例
<style>
ul li a{
transition: .5s;
color: black;
}
ul li a:hover{
border-bottom: 2px solid red;
}
</style>
上記のコードは擬似要素のみにしかborderを記述していないのでうまくアニメーションされない。
OK例
下記のコードのように<a>
要素にもborder
を記述しておけばtransition
もうまく機能する。transparent
と設定しておけばborder
は透過の状態になる。
<style>
ul li a{
border-bottom: 2px solid transparent;
transition: .5s;
color: black;
}
ul li a:hover{
border-bottom: 2px solid red;
}
</style>