transitionとfilterで美しく変化するCSS画像エフェクト5選(基礎から応用まで)

今回は画像にtransitionfilter(grayscale contrast invert hue-rotate brightness sepia saturate) を指定して動かすCSShoverエフェクトを基礎から応用までご紹介します。
htmlとcssだけしか使っていません。
コードの説明や実際の動きも詳しくまとめてみたので自由にお使いください。

こちらのデザイン・コードはすべて完全オリジナルなのでコピペ大歓迎です。

 

1. hoverすると白黒画像→コントラストの効いた画像に変化するfilterエフェクト

動きは下の画像のような感じになります

コードを見る
<div class="container">
  <div class="image">
    <img src="https://images.unsplash.com/photo-1551607117-21fa129a211d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1720&q=80" style="background-size:cover;" class="img" alt="">
  </div>
</div>
/* hover前のスタイル */
img {
  margin: 0 auto;
  width: 350px;
  height: 220px;
  cursor: pointer;
  transition: 500ms ease-in;
  /* エフェクトの速度調整 */
  filter: contrast(100%) grayscale(100%);
  /* コントラストと白黒の度合いの指定 */
}
/* hover後のスタイル */
img:hover {
  filter: contrast(150%) grayscale(0);
  /* hover後のコントラストと白黒度合いの指定 */
}
ここがポイント!
  1. hover前・hover後のimgスタイルを用意
  2. hover前のimgにtransitionでエフェクトの速度調整・filter: contrast() grayscale()でコントラストと白黒の調整
  3. hover後のimgにも同じくfilter: contrast() grayscale()でコントラストと白黒の調整
  4. 今回はhover前:contrast(100%) grayscale(100%)、hover後:contrast(150%) grayscale(0)で白黒画像からコントラストの効いた画像に変化するエフェクトを実現

 

2. hoverすると白黒→温かみのある色に画像が変化するfilterエフェクト

動きは下の画像のような感じになります

コードを見る
<div class="container">
  <div class="image">
    <img src="https://images.unsplash.com/photo-1551607117-21fa129a211d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1720&q=80" style="background-size:cover;" class="img" alt="">
  </div>
</div>
/* hover前のスタイル */
img {
  margin: 0 auto;
  width: 350px;
  height: 220px;
  cursor: pointer;
  transition: 500ms ease-in;
  /* エフェクトの速度調整 */
  filter: saturate(0%);
  /* saturateで彩度の度合いを指定 */
}
/* hover後のスタイル */
img:hover {
  filter: saturate(200%);
  /* hover後の彩度の度合いを指定 */
}
ここがポイント!
  1. hover前・hover後のimgスタイルを用意
  2. hover前のimgにtransitionでエフェクトの速度調整・filter: saturate()で彩度の調整
  3. hover後のimgにも同じくfilter: saturate()で彩度の調整
  4. 今回はhover前:saturate(0%)、hover後:saturate(200%)で温かみのあるエフェクトを実現

 

3. hoverするとセピア色で古い写真→新しい写真へと変化するfilterエフェクト

動きは下の画像のような感じになります

コードを見る
<div class="container">
  <div class="image">
    <img src="https://images.unsplash.com/photo-1551607117-21fa129a211d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1720&q=80" style="background-size:cover;" class="img" alt="">
  </div>
</div>
/* hover前のスタイル */
img {
  margin: 0 auto;
  width: 350px;
  height: 220px;
  cursor: pointer;
  transition: 800ms ease-in;
  /* エフェクトの速度調整 */
  filter: sepia(100%);
  /* セピア(古い写真のような色合い)の指定 */
}
/* hover後のスタイル */
img:hover {
  filter: sepia(0%);
  /* hover後のセピアを指定 */
}
ここがポイント!
  1. hover前・hover後のimgスタイルを用意
  2. hover前のimgにtransitionでエフェクトの速度調整・filter: sepia()でセピアの度合いを調整
  3. hover後のimgにも同じくfilter: sepia()でセピアの度合いを調整
  4. 今回はhover前:sepia(100%)、hover後:sepia(0%)と指定して古い写真→新しい写真に変化するエフェクトを実現

 

4. hoverすると色相回転で画像の色が鮮やかに変化するfilterエフェクト

動きは下の画像のような感じになります

コードを見る
<div class="container">
  <div class="image">
    <img src="https://images.unsplash.com/photo-1551607117-21fa129a211d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1720&q=80" style="background-size:cover;" class="img" alt="">
  </div>
</div>
/* hover前のスタイル */
img {
  margin: 0 auto;
  width: 350px;
  height: 220px;
  cursor: pointer;
  transition: 2800ms ease-in;
  /* エフェクトの速度調整 */
  filter: hue-rotate(0);
  /* hue-rotateで色相回転の度合いの指定 */
}
/* hover後のスタイル */
img:hover {
  filter: hue-rotate(2880deg);
  /* hover後の色相回転の度合いの指定 */
}
ここがポイント!
  1. hover前・hover後のimgスタイルを用意
  2. hover前のimgにtransitionでエフェクトの速度調整・filter: hue-rotate()で色相回転の度合い調整
  3. hover後のimgにも同じくfilter: hue-rotate()で色相回転の度合い調整
  4. 今回はhover前:hue-rotate(0)、hover後:hue-rotate(2880deg)と指定して色が鮮やかに変化するエフェクトを実現

 

5. クラブハウスにいるかのような躍動感を感じるfilterエフェクト(応用編)

動きは下の画像のような感じになります

コードを見る
<div class="container">
  <div class="image">
    <img src="https://images.unsplash.com/photo-1474899310722-cb9b0f84bb91?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1334&q=80" style="background-size:cover;" class="img" alt="">
  </div>
</div>
/* hover前のスタイル */
img {
  margin: 0 auto;
  width: 350px;
  height: 220px;
  cursor: pointer;
  transition: 2800ms ease-in;
  /* エフェクトの速度調整 */
  filter: invert(25%) hue-rotate(0) brightness(80%);
  /* invertで階調反転・hue-rotateで色相回転・brightnessで明るさの度合いの指定 */
}
/* hover後のスタイル */
img:hover {
  filter: invert(0%) hue-rotate(2880deg) brightness(110%);
  /* hover後の階調反転・色相回転・明るさの度合いの指定 */
}
ここがポイント!
  1. hover前・hover後のimgスタイルを用意
  2. hover前のimgにtransitionでエフェクトの速度調整・filter: invert() hue-rotate() brightness()で階調反転・色相回転・明るさの調整
  3. hover後のimgにも同じくfilter: invert() hue-rotate() brightness()で階調反転・色相回転・明るさの調整
  4. 今回はhover前:filter: invert(25%) hue-rotate(0) brightness(80%)、hover後:filter: invert(0) hue-rotate(2880deg) brightness(110%)と指定することでクラブハウス感溢れるエフェクトを実現

参考

そもそもWebデザインの基礎がわからない。。
そんなあなたにはこれ!

ふたご


でもなあ、独学だと心配だしプログラミングスクールで学びたい!。かといってお金はかけたくないし。。
そんなあなたにはこれ!

ふたご

完全無料で一人前のエンジニアになれるプログラミングスクールあります
  1. プログラミング学習&サポートが無料!
  2. 誰もが知っている超優良企業への就職サポート付き!
  3. 学習言語:Java、PHP、HTML、CSSなど

 

   話だけ聞いてみる