【CSS】アニメーション: animation-delayをsass関数とスタイル属性で設定する
記事更新日:2022-02-02
すべて同時に点滅だと、なんか格好悪い。
animation-delayを使って、時間差にしよう。
animation-delayの設定方法
方法その1:sass関数を使う
@for は、繰り返しの処理にとても便利。
ここをクリックしてコードを見る
<div class="crater"></div>
<div class="crater"></div>
<div class="crater"></div>
<div class="crater"></div>
<div class="crater"></div>
<div class="crater"></div>
<div class="crater"></div>
.crater {
animation: opacity 3s infinite alternate;
$count: 7;
$delay: 0;
@for $i from 1 through $count {
&:nth-child(#{$i}) {
animation-delay: $delay +s;
}
$delay: $delay + 1;
}
}
@keyframes opacity {
100% {
opacity: 0;
}
}
【 Point 】
forループの中で、delayの数値を1ずつ足していく
バラバラの点滅になった。
方法その2:style属性を使う
HTMLのstyle属性を使うと、sassのコードが短くなるから、これもなかなか便利。
ここをクリックしてコードを見る
<div class="crater" style="--i:0;"></div>
<div class="crater" style="--i:1;"></div>
<div class="crater" style="--i:2;"></div>
<div class="crater" style="--i:3;"></div>
<div class="crater" style="--i:4;"></div>
<div class="crater" style="--i:5;"></div>
<div class="crater" style="--i:6;"></div>
.crater {
animation: opacity 3s infinite alternate;
animation-delay: calc(.5s * var(--i));
}
@keyframes opacity {
100% {
opacity: 0;
}
}
nth-childが使えないときに、いいかも。
まとめ
【 アニメーションの時間遅延の設定方法 】
- sass関数のforループを使う
- HTMLのstyle属性を使う
結果は同じなので、状況によって使いわけてみよう。
for の いろんな使い方
sassでループが使えるのはうれしい。
2022-02-02
編集後記:
この記事の内容がベストではないかもしれません。