【发布时间】:2016-07-29 06:37:44
【问题描述】:
我并不经常发现自己遇到 CSS 问题,但这让我摸不着头脑。
在这个 plunk http://plnkr.co/i2Fxol 中,除了 IE10 和 11 和 Edge 完全无法将 css 转换应用到 一些 元素(不是全部)之外,所有浏览器都按预期工作。而且无论我怎么看,我都看不出它为什么在那些特定的地方失败了。 (此处添加了 CSS,但需要在上下文中查看,因为这是一个非常简单的视图)
#navigation ul {
display: block;
list-style: none;
overflow: hidden;
transition: all .2s ease;
}
基本上,当手风琴打开并且菜单可以在规定的 0.2 秒内扩展和收缩时,它们会打嗝。所有其他转换都有效。
哦,我现在有办法在 HTML5 中为 svg 路径添加闭包,只是为了消除 IE 和 Edge 中那些完全没有意义的警告。
编辑
在加载时收集手风琴的初始高度:
...
var initialHeights = document.getElementsByClassName("level-1");
var values = [];
for(var i = 0; initialHeights.length > i; i++){
values.push(initialHeights[i].offsetHeight);
}
...
然后使用以下方法将它们与安全存储在数组中的值内联归零:
function toZero(){
for(i = 0; mainSubMenus.length > i; i++){
mainSubMenus[i].setAttribute("style", "height:0;");
}
}
toZero();
这允许使用 css 在零高度和已知值之间转换。
脑残
我认为也许以下方法可以治愈疾病:
mainSubMenus[i].style.height = 0;
我错了。
【问题讨论】:
-
您是否在为从
display: none到display: block的任何元素设置动画? -
不,高度。当元素的高度在它们设置为 0 之前已知时,从加载中获取高度。
-
您能否更具体地说明哪些动画无法正常工作?对比 Edge 与 Chrome 的行为的 GIF 也会很有帮助;你可以通过screentogif.codeplex.com获得一个很棒的应用程序。
-
Edge is this one 和 Chrome is this one。您将在 Edge 中看到展开和折叠的手风琴转换是瞬时的,而 Chrome(以及除 IE 之外的所有其他)中的手风琴转换是流畅的。这些是only 没有按预期播放的动画。所有其他人都按预期工作。
标签: javascript css internet-explorer microsoft-edge