記事一覧 画像の文字をキラリと光らせる(HTML、CSS)
コーディング

画像の文字をキラリと光らせる(HTML、CSS)

画像の文字をキラリと光らせる(HTML、CSS)
この記事は2022年9月に公開しました。
内容が今と違う場合があります。
文字の入った画像を、キラリと光らせる。
HTML と CSS だけで、画像1枚からできます。
この記事では、その手順とコードを紹介します。

画像の文字をキラリと光らせる

画像の見た目を変えるアニメーションは、複数の画像を1コマずつ切り替えて作ることが多いです。
ただ、光らせる程度なら、1枚の画像で足ります。

手順

手順ごとの見え方を、画像で並べます。
④と⑤は光が動くので、画像はその途中の1場面です。
動きは、デモページで確かめられます。
デモページで動きを見る

①画像を準備(背景が透過している画像)

黒い背景の上に、背景が透過した「Happy Birthday」の文字の画像を置いた状態

②cssで光を作成

黒い背景の上に、CSS で作った白くぼやけた斜めの光だけを出した状態(画像は透明にしている)

③光を画像でマスクする

光を画像の文字の形で切り抜き、光が当たる文字の部分だけが白く見える状態

④光を移動させる

文字の形で切り抜いた光が、右へ動いている途中の状態

⑤画像の上に、画像でマスクした光を配置する

元の画像の上に切り抜いた光を重ね、文字の一部が白く光って見える状態

コード

⑤の形のコードです。

HTML

<div class="demo-ttl">
  <div class="demo-inner">
    <img src="画像.svg" alt="画像" />
    <div class="demo-mask">
      <div class="demo-hikari"></div>
    </div>
  </div>
</div>

CSS

.demo-ttl{
  background-color: #000;
  padding: 15px;
}
.demo-inner{
  position: relative;
  width: 100%;
  overflow: hidden;
}
.demo-mask{
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  -webkit-mask-image: url('画像.svg'); mask-image: url('画像.svg');
  -webkit-mask-size: 100% auto; mask-size: 100% auto;
  -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
  -webkit-mask-position: left top; mask-position: left top;
}
.demo-hikari{
  position: absolute;
  top: -2%;
  left: -60%;
  width: 60%;
  padding: 60% 0 0;
  background-image: radial-gradient(circle, rgb(255, 255, 255) 0%, rgba(255, 255, 255, 0) 75%);
  transform: skewX(30deg);
  animation-name: demo_kirari;
  animation-duration: 1.5s;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
}
@keyframes demo_kirari{
  100%{
    left: 100%;
  }
}

あとがき

画像の文字を光らせる手順を、5つに分けて紹介しました。
次の3つを組み合わせています。
背景が透過している画像
光らせたい文字の画像です。
光を切り抜く形にも、同じ画像を使います。
radial-gradient の光
白い光を CSS で作り、animation で左から右へ動かします。
mask-image のマスク
光を画像の形で切り抜き、元の画像の上に重ねます。
画像や、マスクした要素の中身を工夫すると、他にもいろいろなアニメーションを作れそうです。
IMG-flowで働くという選択
この記事を書いているIMG-flowは、大阪のWeb制作会社です。
どんな人と、どんな進め方で仕事をしているのかは、採用ページにまとめています。
クリエイター採用を見る
この記事は参考になりましたか?
ご回答ありがとうございました