Web制作 CSS

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

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

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

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

これはbackgroundにはtransitionが効かないのが原因で、今回はその対処法について解説します。

今だけ!5大無料特典あり🎁

コーディングの時給アップにはこちら!


backgroundのlinear-gradientでtransitionが効かない時の対処法

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

See the Pen
Untitled
by junpei (@junpei-sugiyama)
on CodePen.

文字色はtransitionが効いていますが、backgroundlinear-gradientを使った背景のグラデーションには効いていないのが分かります。

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

 

擬似要素とopacityで再現

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

See the Pen
Untitled
by junpei (@junpei-sugiyama)
on CodePen.

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

そして背景色は2つ重ねていて、hoverすると上の背景色が透明になって下にある反転した背景色が現れるということです。

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

コードはこちらです(CSSはレイアウトのためのスタイルは省略)

<div class="btn">
  <span>hover</span>
</div>
.btn {
  background: linear-gradient(to right,#87ceeb, #4169e1); /* 文字を上に表示するための記述 */
  color: #333;
  position: relative;
  transition: all 1s ease-out;
}
/* 文字を上に表示するための記述 */
.btn span {
  position: relative;
}
/* ボタンhover後の背景色 */
.btn::before {
  background: linear-gradient(to right, #4169e1, #87ceeb);
  content: "";
  height: 100%;
  left: 0;
  position: absolute;
  top: 0;
  transition: all 1s ease-out;
  width: 100%;
}
/* ボタンhoverで文字色変更 */
.btn:hover {
  color: #f2f2f2;
}
/* ボタンhoverで元の背景色透過 */
.btn:hover::before {
  opacity: 0;
}

 

background-colorはtransitionが効く

おまけですが、background-colorにはtransitionが効きます。

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

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

以上になります。

 

コーディングの時給と作業効率を上げる!
2年間の実務で実際に使ったコードをまとめた『コーディング&WordPressメモまとめ集』をBrainで公開しています。
  • コピペで使えるWordPressの各テンプレート
  • 実務でよく使う見出し一覧
  • 実務でよく使うテキストのhoverアニメーション
  • 実務でよく使うボタン内の矢印9種類
  • Contact Form 7の色々・・・
などなど、他にもコピペで使えるコードがたくさん載せてあるので、時短=時給アップに繋がります。
さらに『コードのまとめ方が参考になった』というレビューも多数頂いているので、これを元に自分なりの"メモまとめ集"を作るという使い方も出来ます。
レビューは390件以上あるので、気になる方は以下のボタンからチェックしてみて下さい👇

今だけ!5大無料特典あり🎁

販売ページとレビューを見てみる


ブログランキング・にほんブログ村へ
  • この記事を書いた人

じゅんぺい

タイ・バンコク在住のWeb制作フリーランス兼ブロガー▶︎37歳からWeb制作を開始▶︎コーディングとWordPressのオリジナルテーマ制作でこれまで80件以上納品▶︎Web制作中心の当ブログは月間最高8.4万PV▶︎Twitterのフォロワーは6100人▶︎コーディングとWordPressのコンテンツを販売し、3日で500部突破&250万円&人気1位獲得 → 累計700部&420万円突破

-Web制作, CSS