javascript - Edge 和 IE11 中的 CSS 转换不起作用

标签 javascript css internet-explorer microsoft-edge

我不经常发现自己遇到 CSS 问题,但这让我摸不着头脑。

在这个 SCSS 中http://plnkr.co/i2Fxol ,在所有浏览器中,一切都完全按照预期工作,除了 IE10 和 11 以及 Edge 完全无法将 css 转换应用于某些元素,而不是全部。无论我怎么看它,我都看不出为什么它在那些特定的地方失败了。 (此处添加了 CSS,但需要在上下文中查看,因为这是一个非常简单的 View )

#navigation ul {
  display: block;
  list-style: none;
  overflow: hidden;
  transition: all .2s ease;
}

本质上,当 Accordion 打开并且菜单可在规定的 0.2 秒内展开和收缩时,它们会打嗝。所有其他转换都有效。

哦,现在我可以在 HTML5 中向 svg 路径添加闭包,只是为了删除 IE 和 Edge 中那些完全毫无意义的警告。

编辑

Accordion 的初始高度是在加载时收集的:

...
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;

我错了。

最佳答案

我认为这里的问题在于缺乏初始高度。如果您循环遍历元素,并将其高度设置为等于其计算的高度样式的高度,则可以使用 collapse 样式将高度覆盖为 0px,从而触发两个显式数字之间的转换。

var box = document.querySelector( ".box" );

// Set the box's initial height to its computed height
box.style.height = window.getComputedStyle( box ).height;

// Hide the box
box.classList.add( "collapsed" );

// Click will toggle a "collapsed" class on the box
document.addEventListener( "click", e => box.classList.toggle( "collapsed" ) )
.box {
  width: 100px;
  overflow: hidden;
  border: 1px solid #000;
  transition: all .2s ease;
}

.collapsed {
  height: 0!important;
}
<ul class="box">
  <li>Hello</li>
  <li>World</li>
</ul>

关于javascript - Edge 和 IE11 中的 CSS 转换不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38611773/

相关文章:

html - 4 列 Flexbox-Layout 在任何浏览器上都能很好地工作,除了 IE,它在一行中只显示 3 列

javascript - 客户端的分面搜索

javascript - 为容器中的非全宽图像创建视差效果

html - 使用 css/javascript 的流体/自动对齐 block /框列表

javascript - 为什么有些 JS/CSS 的 URL 问号后面有数字?

jquery - 多部分表单 POST 导致 Firefox 提示 JSON 保存

javascript - AJAX 跨域请求 IE 8+

javascript - 防止用户在达到最大长度时输入其他字符

javascript - 使用Jquery控制表宽度问题

javascript - WinJS 从 LocalState 文件夹中删除文件夹