恵比寿のWebサイト制作・Webデザインチームのブログ。Webデザインやコーディング、SEO対策まで幅広く手掛けています。

恵比寿のデザイン制作チームのブログです。

Webデザイン、
Web制作、
SEO対策の
ご依頼・ご相談

Contact

【CSS】maskプロパティとanimationでpng画像をキランと光らせる(マスク処理)

投稿日:2022-03-04 更新日:




maskanim_thumbnail

以前、画像をcssで切り抜く方法をご紹介しましたが、今回はそれを利用してpng画像をキランと光らせる方法をご紹介します!
(以前紹介した記事はコチラ↓↓)
maskプロパティで画像を切り抜く方法(マスク処理)

まずは、今回作成したデモになります。

次に、今回作成したデモの全体コードになります。

HTML

<div class="wrap">
  <div class="effect">
    <img src="sample.png" alt="">
  </div>
</div>

HTMLに関しましては、説明を省略します。

CSS

*{
  box-sizing: border-box;
}
.wrap{
  background-color: #afafaf;
  width: 195px;
}
.effect{
  position: relative;
  -webkit-mask-image: url(sample_mask.png);
  mask-image: url(sample_mask.png);
  background-repeat: no-repeat;
  }
.effect::before {
  position: absolute;
  top: 0;
  left: -75%;
  content: '';
  width: 50%;
  height: 100%;
  background: -webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,.5) 100%);
  background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,.5) 100%);
  -webkit-transform: skewX(-25deg);
  transform: skewX(-25deg);
  -webkit-animation: shine 2s infinite;
  animation: shine 2s infinite;
}
@-webkit-keyframes shine {
  0%{left: -75%;}
  65%{left: -75%;}
  100% {left: 125%;}
}
@keyframes shine {
  0%{left: -75%;}
  65%{left: -75%;}
  100% {left: 125%;}
}

ざっくりCSSを分けて説明します。
まず、キランとさせるためにcssのanimationです。

.effect::before {
  position: absolute;
  top: 0;
  left: -75%;
  z-index: 2;
  display: block;
  content: '';
  width: 50%;
  height: 100%;
  background: -webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,.5) 100%);
  background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,.5) 100%);
  -webkit-transform: skewX(-25deg);
  transform: skewX(-25deg);
  -webkit-animation: shine 2s infinite;
  animation: shine 2s infinite;
}
@-webkit-keyframes shine {
  0%{left: -75%;}
  65%{left: -75%;}
  100% {left: 125%;}
}
@keyframes shine {
  0%{left: -75%;}
  65%{left: -75%;}
  100% {left: 125%;}
}

疑似要素を使って、斜めに白いラインを走らせています。
動きが分かりやすいよう、背景に色を付けています。
この状態では、画像部分だけでなく全体がキランとしている状態になります。

.effect{
  position: relative;
  -webkit-mask-image: url(sample_mask.png);
  mask-image: url(sample_mask.png);
  background-repeat: no-repeat;
 }

画像部分のみ光らせるために、前回利用したマスクプロパティで、画像部分のみキランと光らせることが出来ました。

まとめ

マスクプロパティについて、現在でも対応していないブラウザがありますので、
詳細は「Can I use」で確認してください。

背景色が白い場合は、マスクを使用しなくても良いかもしれませんが、
背景色がある場合は、是非試してみてください!




この記事をシェアする

  • Twitter
  • Facebook
  • BookmarkB!
  • Pocket

Related Entries

この記事を書いた人

noda

noda

めざせ万能デザイナー。HTML/CSS、JavaScript、PHP、JSON、Photoshop、Illustratorを扱っています。好きな食べものはラーメン、うどん。