例えば、初期状態で
display: none;
opacity: 0;
としてあるDOMを、あるイベントによって
display: block;
にすると同時にopacityを1へとアニメーションしたい場合。
それをcssのtransitionを使って実現しようとすると、
css:
.hoge{
display: none;
opacity: 0;
transition: opacity 1s linear 0s;
}
.hoge.show{
display: block;
opacity: 1;
}
と直感的に書いてしまいがちであるが、これではうまく動かない。
なぜならshowがクラス名として付与された時点で初めて
display: block;
となり、このタイミングでDOMが生成されているため。
従って、display: none;
状態のときの
opacity: 0;
というプロパティはtransitionのスタート値とはならず、 0 -> 1 へのアニメーションは走らない。
上記の仕様を実現するには、cssのanimationを使うと良い。
@keyframes show{
from{
opacity: 0;
}
to{
opacity: 1;
}
}
.hoge{
display: none;
}
.hoge.show{
display: block;
animation: show 1s linear 0s;
}
※ベンダープレフィックスは割愛