【发布时间】:2019-11-22 18:15:17
【问题描述】:
下面的 sn-p 显示了我在 Internet Explorer 11 中发现的 css 动画问题的简化示例。
- 旋转按钮将“.spin”类添加到 div,这应该会改变横幅的颜色并开始旋转。
- 停止按钮会从 div 中删除“.spin”类,这意味着它应该恢复到原来的颜色并停止旋转。
在 IE11 中,第 2 步不起作用 - 它会更改颜色但不会停止动画。奇怪的是,如果您尝试使用运行它的开发人员工具,它会按预期工作。
我在这里做错了什么还是这是一个已知的错误?尽管我的 google-fu 可能缺少,但我一直找不到任何参考。
var banner = document.getElementById('banner');
var spinButton = document.getElementById("spin-button");
var stopButton = document.getElementById("stop-button");
spinButton.addEventListener("click", function(){
banner.classList.add("spin");
})
stopButton.addEventListener("click", function(){
banner.classList.remove("spin");
})
.spin {
background: #FF0000;
color: #FFF;
-webkit-animation: spin 1.5s infinite linear;
animation: spin 1.5s infinite linear;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<div>
<div id="banner">
<p>
Hello World
</p>
</div>
<button id="spin-button">Spin</button>
<button id="stop-button">Stop</button>
</div>
【问题讨论】:
-
听起来像经典的 IE,你必须做其他事情才能让它停止。尝试添加一些随机类,看看它是否会导致它停止。或读取高度或导致您访问元素的 css 的内容。只是一个很大的重绘错误
-
感谢@epascarello 的指针——仅仅添加一个类或读取一个属性并不能完全解决问题,但遵循in this answer 的建议会强制重绘。如果您想将其粘贴为答案,我将编辑 q 并给您一些互联网积分
标签: javascript css css-animations internet-explorer-11