我的应用程序中有一个加载旋转动画,当执行大量 js 时,该动画在 FF 和 IE 中保持卡住,但当执行大量 js 时,它在 chrome 中运行良好。
我做了一个plunker来演示这个问题。由于在不同浏览器上的性能不同,我做了三个不同的。它们之间的唯一区别是重复的元素数量。不确定它是否也取决于计算机,在这种情况下,也许您可以更改元素数量以获得较小的性能影响。
在此Chrome version当我重新填充列表时,旋转器动画不断旋转,尽管您可以看到更新 ng-repeat 需要一段时间。
在此FireFox version和 IE version当重新填充列表时,微调器会停止其动画。
CSS:
.spinner-container {
position: absolute;
top: 40%;
left: 50%;
}
#preloader {
margin: 0 auto;
font-size: 10px;
position: relative;
text-indent: -9999em;
border-top: 1.1em solid red;
border-right: 1.1em solid red;
border-bottom: 1.1em solid red;
border-left: 1.1em solid green;
-webkit-animation: load8 1.1s infinite linear;
animation: load8 1.1s infinite linear;
}
#preloader,
#preloader:after {
border-radius: 50%;
width: 80px;
height: 80px;
}
@-webkit-keyframes load8 {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes load8 {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
有谁知道这是为什么以及可能的解决方案吗?
当然,我们会尝试重构“繁重的 js 执行”,但这可能需要一段时间,而且最好立即有一个适当的加载旋转器。
谢谢
最佳答案
这是预期的行为,这就是浏览器在单线程中进行渲染的方式。 Chrome(准确地说是 Webkit 浏览器)在这方面有所不同,这就是它们通常被称为“快速”和“响应式”的原因。 This article总结一下。
您可能希望将 CPU 密集型任务委托(delegate)给 Web Worker。
关于javascript - 动画在 FF 和 IE 上卡住,但在 Chrome 上不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32697533/