hoverとfilter:grayscaleで白黒に切り替え!CSS画像エフェクト3選

今回は画像をhover(マウスオーバー)すると画像の色が白黒に切り替わるエフェクトをfilter:grayscaleで作ってみました
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: grayscale(.5) opacity(.7);
  /* grayscaleで白黒の度合い・opacityで不透明度の指定 */
}
/* hover後のスタイル */
img:hover {
  filter: grayscale(0)  opacity(1);
  /* hover後の色と不透明度の指定 */
}
ここがポイント!
  1. hover前・hover後のimgスタイルを用意
  2. hover前のimgにtransitionでエフェクトの速度調整・filter: grayscale() opacity()で色と不透明度の指定
  3. hover後のimgにも同じくfilter: grayscale() opacity()で色と不透明度の指定
  4. 今回はgrayscaleをhover前は0.5、hover後は1と指定することで霧が晴れるようなエフェクトを実現

 

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: all 500ms ease-in;
  /* エフェクトの速度調整 */
  filter: grayscale(1) opacity(1);
  /* grayscaleで白黒の度合い・opacityで不透明度の指定 */
}
/* hover後のスタイル */
img:hover {
  filter: grayscale(0) opacity(1);
  /* hover後の色と不透明度の指定 */
}
ここがポイント!
  1. hover前・hover後のimgスタイルを用意
  2. hover前のimgにtransitionでエフェクトの速度調整・filter: grayscale() opacity()で色と不透明度の指定
  3. hover後のimgにも同じくfilter: grayscale() opacity()で色と不透明度の指定
  4. 今回はgrayscaleをhover前は1、hover後は0と指定することで白黒→色あり画像になるエフェクトを実現

 

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: all 500ms ease-in;
  /* エフェクトの速度調整 */
  filter: grayscale(0) opacity(1);
  /* grayscaleで白黒の度合い・opacityで不透明度の指定 */
}
/* hover後のスタイル */
img:hover {
  filter: grayscale(1) opacity(1);
  /* hover後の色と不透明度の指定 */
}
ここがポイント!
  1. hover前・hover後のimgスタイルを用意
  2. hover前のimgにtransitionでエフェクトの速度調整・filter: grayscale() opacity()で色と不透明度の指定
  3. hover後のimgにも同じくfilter: grayscale() opacity()で色と不透明度の指定
  4. 今回はgrayscaleをhover前は0、hover後は1と指定することでhoverすると白黒画像になるエフェクトを実現

参考

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

ふたご


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

ふたご

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

 

   話だけ聞いてみる