CSS Web制作 コーディング

【CSS】background-imageでtransitionが効かない時の対処法

hoverでグラデーションの色をtransition使ってじんわり変化させたいけど上手くいかない??

例えばボタンの背景色をグラデーションにしていて、hover時にはグラデーションを反転させたいとします。

普通に反転させるだけなら問題ないのですが、transitionを使ってじんわり変化させようとすると上手くいきません。

これはbackground-imageにはtransitionが効かないのが原因で、今回はその対処方法について書いていきます。

background-imageはtransitionが効かない

まずはbackground-imageでグラデーションにした場合で見てみましょう。

See the Pen
ボタン(background-image)
by junpei (@junpei-sugiyama)
on CodePen.


文字色はtransitionが効いていますが、background-imageにした背景のグラデーションには効いていないのが分かります。

このグラデーションもじんわり変化させたい時は、擬似要素を使います。

 

background-colorはtransitionが効く

今度はbackground-colorの場合を見てみましょう(コードを見るには左上のHTML、CSSをクリックして下さい)

See the Pen
ボタン(background-color)
by junpei (@junpei-sugiyama)
on CodePen.


background-colorの背景色と、colorの文字色はtransitionが効いてじんわり変化しているのが分かります。

 

擬似要素とopacityを使う

擬似要素を使ってもbackground-imageにはtransitionが効かない事には変わりないので、代わりに透過度を変化させるopacityを使って再現してみます。

See the Pen
ボタン(グラデーション)
by junpei (@junpei-sugiyama)
on CodePen.


文字色は先ほどまでと同じように変化させています。

またテキストと背景色の上下関係を意識しないとテキストが背景色の後ろに隠れてしまうので、ここではspanタグで囲っています(spanタグを使わない場合はz-indexをマイナスにしたりする必要があります)

以上です。

-CSS, Web制作, コーディング