旧ブログ(ISSEN)から移行しました

【CSS】CSSテキストアニメーション!! keyframesでテキストをフェードインさせる方法

【CSS】CSSテキストアニメーション!! keyframesでテキストをフェードインさせる方法

杉田侑祐
杉田侑祐3分で読めます

はじめに

この記事の概要

こんにちは、株式会社TOKOSエンジニアのスギタです!
今回はCSSの@keyframesを使いテキストのフェードインアニメーションを行っていきたいと思います。
ヒーローセクション等で使えるので是非参考にしてください。

対象読者

  • CSS/HTML等でアニメーションを実装させたい方

フェードインアニメーション

完成アニメーション

今回行っていくアニメーションは下記のようになります。
テキストが徐々に浮かび上がってくるようなアニメーションになります。

コードの紹介

HTML
<body>
  <p class="text">CREATE</p>
  <p class="text">PLAY</p>
  <p class="text">ENJOY</p>
  <p class="title">
    <span>T</span><span>O</span><span>K</span><span>O</span><span>S</span
    ><span>.</span><span>i</span><span>n</span><span>c</span>
  </p>
</body>
CSS
.title span {
  /*各テキストにanimationを設定*/
  color: transparent; /*テキストを透明にしてtext-shadowだけ表示する*/
  animation-name: blur-title;
  animation-duration: 8s;
  animation-fill-mode: forwards;
}
 
/*一文字ずつ遅延させる*/
span:nth-child(1) {
  animation-delay: 0.15s;
}
span:nth-child(2) {
  animation-delay: 0.3s;
}
span:nth-child(3) {
  animation-delay: 0.45s;
}
span:nth-child(4) {
  animation-delay: 0.6s;
}
span:nth-child(5) {
  animation-delay: 0.75s;
}
span:nth-child(6) {
  animation-delay: 0.9s;
}
span:nth-child(7) {
  animation-delay: 1.05s;
}
span:nth-child(8) {
  animation-delay: 1.2s;
}
span:nth-child(9) {
  animation-delay: 1.35s;
}
 
/* フェードインの設定 */
@keyframes blur-title {
  0% {
    text-shadow: 0 0 100px #ffffff;
    opacity: 0;
  }
  5% {
    text-shadow: 0 0 90px #ffffff;
  }
  15% {
    opacity: 1;
  }
  20% {
    text-shadow: 0 0 0px #ffffff;
  }
  100% {
    opacity: 1;
    text-shadow: 0 0 0px #ffffff;
  }
}
 
.text {
  /*各テキストにanimationを設定*/
  color: transparent; /*テキストを透明にしてtext-shadowだけ表示する*/
  animation-name: blur-text;
  animation-duration: 8s;
  animation-fill-mode: forwards;
}
 
/* フェードインの設定 */
@keyframes blur-text {
  0% {
    text-shadow: 0 0 100px #ffffff;
    opacity: 0;
  }
  5% {
    text-shadow: 0 0 90px #ffffff;
  }
  10% {
    opacity: 1;
  }
  30% {
    text-shadow: 0 0 0px #ffffff;
  }
  100% {
    opacity: 1;
    text-shadow: 0 0 0px #ffffff;
  }
}

上記のようになります。

解説するとフェードイン設定部分でtext-shadowでぼやけさせながらopacityで表示させ、text-shadowをなくしテキストをくっきりさせるようなアニメーションになります。
フェードインの設定内のタイミング指定の%の数値をいじればタイミングをずらすことができるようになります。
また、animation-fill-mode: forwards;でアニメーションの開始時と終了時の状態を指定しています。

終わりに

今回はCSSの@keyframesを使いフェードインアニメーションを行ってみました。
@keyframesでは自由度がそれなりに高いのでちょっとしたアニメーションであれば@keyframesで充分だと思いました。
ヒーローセクション等で目立たせたい箇所に行うだけで印象が変わるなと感じました。
是非参考にしていただけたら幸いです!!

この記事を書いた人

杉田侑祐
杉田侑祐

TOKOSのフロントエンドエンジニア兼UI/UXデザイナー。このブログではフロントエンドメインで投稿しています。HIPHOPとゲームが好きです✌️