CSS トランジションを使用して展開可能なブロックを作成したいと考えています。
.box {
width: 300px;
max-height: 30px;
overflow: hidden;
background: #aaa;
-webkit-transition: max-height 400ms ease-in-out;
-moz-transition: max-height 400ms ease-in-out;
-ms-transition: max-height 400ms ease-in-out;
-o-transition: max-height 400ms ease-in-out;
transition: max-height 400ms ease-in-out;
}
.box.open {
max-height: 999px;
}
これが実際の例です: http://jsfiddle.net/qswgK/。
ブロックを広げた時は上手く滑り落ちますが、潰したい時は若干のレイテンシーで発生します。これは、Chrome、Firefox、Opera、および IE の最新バージョンで確認されています。なぜそれが起こるのですか? JavaScript アニメーションを使用せずにこれを回避できますか?
PS max-height の代わりに高さアニメーションを使用すると、折りたたみはうまく機能しますが、展開された高さが不明なブロックを折りたたんで展開する必要があります。