はじめに
この記事の概要
こんにちは、株式会社TOKOSエンジニアのスギタです!
今回はCSSのkeyflamesを使いテキストのフェードインアニメーションを行っていきたいと思います。
FirstView等で使えるので是非参考にしてください。
対象読者
- 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のkyeflamesを使いフェードインアニメーションを行ってみました。
kyeflameでは自由度がそれなりに高いのでちょっとしたアニメーションであればkyeflamesで充分だと思いました。
ファーストビュー等で目立たせたい箇所に行うだけで印象が変わるなと感じました。
是非参考にしていただけたら幸いです!!