CSSでアニメーション【@keyframes】2回繰り返される・消えた後表示される原因

CSSだけでアニメーション【@keyframes】2回繰り返されるメモ

原因

初期値が表示状態の場合、アニメーションを遅延させると、表示された状態からアニメーションに入るので2回アニメーションが処理されているように見える。

そのため初期値を非表示状態にしなければいけない。

.fedein {
opacity:0;
animation: fadeIn 2s ease 2s 1 normal;
-webkit-animation: fadeIn 2s ease 2s 1 normal;
animation-fill-mode: forwards;
}

@keyframes fadeIn {
0% {opacity: 0}
100% {opacity: 1}
}

@-webkit-keyframes fadeIn {
0% {opacity: 0}
100% {opacity: 1}
}

また処理後の状態を指定しておかないと、アニメーション後も【opacity:0;】を適応してしまうため

animation-fill-mode: forwards;

を記入して、アニメーションの終了時の状態を指定しておく。

ちなみにこちらのアニメーションはページ表示時に起動するため、スクロールで要素がモニター内に入ったときアニメーションを起動する場合は、別の記述をする必要がある。

CSSでふわっとフェードインさせる方法!@keyframesアニメーション入門