これは、次の組み合わせを使用して、記述 (または SCSS などを介して生成) せずに、純粋な CSS で実行できます。
animation-delay
アニメーションの開始時間を変更するネガ
- ルールの適用を「ランダム化」する数式を適用するための複数
nth-child
またはルールnth-of-type
movie.nth-child(2n) { animation-delay: -10s }
movie.nth-child(2n+1) { animation-delay: -30s }
movie.nth-child(3n) { animation-delay: -20s; }
movie.nth-child(5n) { animation-delay: -40s }
movie.nth-child(7n) { animation-delay: -15s }
{etc}
最初の 2 つのルールだけを使用すると、交互のルールが得られます (例: テーブル内の偶数/奇数行)。+1
オフセットを持つ 2 番目のルールに注目してください。これは、クラス ( movie
) が変更するルールに対して適切なデフォルトを持っていない場合に重要です (デフォルトでは 0 ですanimation-delay
)。
nth-child(n)
の素数の倍数で数式を使用n
すると、有効なパターンの長さがすべての素因数 (2*3*5*7 = 210
繰り返し前の要素など) の積に等しくなります。
li {
animation: movie 5s linear infinite;
}
@keyframes movie {
20% { color: white }
40% { color: black }
}
li:nth-child(2n-1) {
background-color: lime;
animation-delay: 1s;
}
li:nth-child(2n) {
background-color: orange;
animation-delay: 2s;
}
li:nth-child(3n) {
background-color: yellow;
animation-delay: 3s;
}
li:nth-child(5n) {
background-color: magenta;
animation-delay: 5s;
}
li:nth-child(7n) {
background-color: aqua;
}
<ul>
<li>0</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>11</li>
<li>12</li>
<li>13</li>
</ul>
さらにランダム化するために、わずかに異なるn
倍数/オフセットを使用して 2 番目のルール セットを作成し、 animation-duration
(または他のルールを実際に) 変更することができます。