CSS の display: none; から opacity のアニメーションを適用する方法

CSS の display: none; から opacity のアニメーションを適用する方法を紹介します。
例えば、DOM の生成タイミングで transition が意図した動きをしてくれない時に便利な方法です。

  1. display: none; から opacity 透過アニメーションの適用方法
    1. display: none; から transition で opacity がアニメーションしない理由

display: none; から opacity 透過アニメーションの適用方法

display: none; から opacity 透過アニメーションを適用するには animation を利用します。

.example {
display: none;
}
.example.active {
display: block;
animation: fade-in .4s;
}
@keyframes fade-in {
0% {opacity: 0;}
100% {opacity: 1;}
}

紹介している指定は、クラス example にクラス active が付与された時を想定しています。
実行したいタイミングは任意の指定に変更してご利用ください。

display: none; から transition で opacity がアニメーションしない理由

display: none; から display: block; に切り替わるタイミングでは、指定した opacity: 0; が初期値にならないため、transition を利用したアニメーションはうまく動きません。
そのため、今回紹介した方法では display: block; に切り替わったタイミングで animation の初期値に opacity: 0; を指定。アニメーション終了後に opacity: 1; を指定することで、透過アニメーションを再現することが可能になります。

まとめ

CSS の display: none; から opacity のアニメーションを適用する方法を紹介しました。