【发布时间】:2020-03-08 11:28:55
【问题描述】:
我有以下 CSS sn-p:
.Test-Content {
transition: height 2s;
}
以及以下 HTML 代码:
<div id="mydiv" class="Test-Content">foo</div>
使用纯 JavaScript,我正在尝试像这样更改 div 的高度:
myId = document.getElementById("mydiv");
myId.style.cssText = "height: 0;";
/* ... Lots of code and situations where the browser re-renders the page ... */
myId.style.cssText = "height: 100px";
这确实将div 的高度从原来的0 更改为100px,但没有任何动画,即立即。我不明白为什么会这样。毕竟,div 在其类列表中有.Test-Content,因此任何它的高度变化都会触发转换。
谁能解释一下为什么不是这样?
当我将其更改为以下(非常奇怪和令人担忧的)代码时,它按预期工作:
CSS:
.Test-Content-A {
transition: height 2s;
height: 0;
}
.Test-Content-B {
transition: height 2s;
height: 10px; /* or whatever number you prefer */
}
HTML:
<div id="mydiv" class="Test-Content-A Test-Content-B">foo</div>
JavaScript:(同上)
似乎我可以通过直接设置元素的style.cssText 来触发转换,前提是该元素在其类列表中也有两个具有不同height 属性的类。
我在 Firefox 和 Chrome 中遇到了这个问题(到目前为止还没有测试过其他的),在撰写本文时都处于当前的补丁级别。
【问题讨论】:
标签: javascript html dom css-transitions