CSS Transitionsを使ってwidth
プロパティーをアニメーションさせる時にmax-width
プロパティーがあるとどうアニメーションされるのかというのが気になったので調べてみたら、Chrome 18と20、Opera 11、12でアニメーションがおかしくなるバグにぶち当たった。Internet Explorer 10とFirefox 11(及び13)では大丈夫そう。
Demo: max-width
and transition
WebKit系では一旦幅が0になってからアニメーションが始まり、10秒でmax-width
プロパティーの値である400px
で止まる。逆方向のアニメーションもつけた場合、max-width
プロパティーの値を無視して600px
から100px
へ10秒かけてアニメーションするようになるが、400px
から600px
の間のアニメーションは描画されない。Opera系ではとにかくアニメーションさせようとした要素が消える。
WebKit系では、デモのような一方向のアニメーションならtransition
とmax-width
プロパティーを同時に指定しなければ回避できる。
.test {
width: 100px;
max-width: 400px;
}
.test:hover {
width: 600px;
transition: all 10s linear;
}
両方向でアニメーションさせる場合は……あとで考えるけど無理そう。
調べたかったmax-width
プロパティーが考慮されたアニメーションなるのかというのの答えは、一応なるということで良さそう。
@t_ashulaにOpera Nextの1372では直っていると指摘されたのでNextを更新してみたところ、ちゃんとFirefoxと同じようにアニメーションするようになっていた。