設定した要素に CSS トランジションを適用したいと考えていdisplay: none
ます。次のコードを検討してください。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS Transition From Hidden</title>
<style type="text/css">
div {
-webkit-transition-property: all;
-webkit-transition-duration: 2s;
}
div.hidden {
display: none;
opacity: 0;
}
div.from {
opacity: 0;
}
</style>
<script type="text/javascript">
function loaded() {
var e = document.getElementById("foo");
e.className = "from";
window.webkitRequestAnimationFrame(function(t) {
e.className = null;
});
}
</script>
</head>
<body onload="loaded()">
<div id="foo" class="hidden">
My test div
</div>
</body>
</html>
class="div.hidden"
からへclass=""
、つまり からdisplay: none; opacity: 0;
へ行きたいのですがdisplay: block; opacity: 1;
、クロムでは (少なくとも)display: none
アニメーション化されないオブジェクトがあります。要素はすぐに終了状態になります。
これに対する私の回避策は、最初に要素を に設定してからdisplay: block; opacity: 0;
、次のフレームで遷移を行うことですrequestAnimationFrame()
( -属性を使用しますが、隠し要素をレイアウトしたくないので使用したくありません。visibility
質問は次のとおりです。これは正しい動作ですか、それともバグですか? それが正しい動作であれば、コードを書くためのより良い方法はありますか? それを行うことができるライブラリがあるかどうかを尋ねているわけではないことに注意してください.DOM上で直接行うより良い方法があるかどうか知りたい.