今回はテキストを1文字ずつ表示させるCSSアニメーションを紹介していきたいと思います。
テキストを1文字ずつ表示させるアニメーション
タイピングのように表示
1つ目はタイピングで打ち込んでいるような表示の仕方をCSSアニメーションで表現した方法です。
アニメーションで表示するテキスト
html
<div class="anime-box">
<p class="TextAnime">アニメーションで表示するテキスト</p>
</div>
css
.anime-box .TextAnime{
border-right: 0.05em solid black;
overflow: hidden;
white-space: nowrap;
animation: txtanime 3s steps(16, end) forwards;
}
@keyframes txtanime{
0% { width: 0%; }
100% { width: 16em;}
}
1文字ずつフェードインしていくアニメーション
2つ目は1文字ずつフェードインしていくようなアニメーションになります。
cssの記述が多くなってしまいますがjavascriptを使わない方法になります。
T
E
X
T
A
N
I
M
A
T
I
O
N
html
<div class="anime-box">
<div class="OneTextAnime">
<span>T</span>
<span>E</span>
<span>X</span>
<span>T</span>
<span>A</span>
<span>N</span>
<span>I</span>
<span>M</span>
<span>A</span>
<span>T</span>
<span>I</span>
<span>O</span>
<span>N</span>
</div>
</div>
css
.anime-box .OneTextAnime{
display: flex;
overflow: hidden;
}
.anime-box .OneTextAnime span{
opacity: 0;
animation: onetxtanime 2s forwards;
}
.anime-box .OneTextAnime span:nth-child(1){animation-delay: 0.5s}
.anime-box .OneTextAnime span:nth-child(2){animation-delay: 1.0s}
.anime-box .OneTextAnime span:nth-child(3){animation-delay: 1.5s}
.anime-box .OneTextAnime span:nth-child(4){animation-delay: 2.0s}
.anime-box .OneTextAnime span:nth-child(5){animation-delay: 2.5s}
.anime-box .OneTextAnime span:nth-child(6){animation-delay: 3.0s}
.anime-box .OneTextAnime span:nth-child(7){animation-delay: 3.5s}
.anime-box .OneTextAnime span:nth-child(8){animation-delay: 4.0s}
.anime-box .OneTextAnime span:nth-child(9){animation-delay: 4.5s}
.anime-box .OneTextAnime span:nth-child(10){animation-delay: 5.0s}
.anime-box .OneTextAnime span:nth-child(11){animation-delay: 5.5s}
.anime-box .OneTextAnime span:nth-child(12){animation-delay: 6.0s}
.anime-box .OneTextAnime span:nth-child(13){animation-delay: 6.5s}
@keyframes onetxtanime{
from { opacity: 0 }
to { opacity: 1 }
}
13文字あるのでdelayを13個分記述しています。
javascriptを使えばcssの記述はもう少し少なくできると思います。
今回はjavascriptを一切使わない方法でやってみました。
コメント