
【CSS】CSSテキストアニメーション!! keyframesでテキストをフェードインさせる方法
杉田侑祐約3分で読めます
はじめに
この記事の概要
こんにちは、株式会社TOKOSエンジニアのスギタです!
今回はCSSの@keyframesを使いテキストのフェードインアニメーションを行っていきたいと思います。
ヒーローセクション等で使えるので是非参考にしてください。
対象読者
- CSS/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>.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で充分だと思いました。
ヒーローセクション等で目立たせたい箇所に行うだけで印象が変わるなと感じました。
是非参考にしていただけたら幸いです!!
