了解浏览器转换中的 CSS 回流问题
在使用 CSS3 转换创建响应式图像滑块时,尝试触发CSS 属性修改时的动画。尽管初始化了transition属性,浏览器可能会忽略这些变化,不执行想要的动画。
解决方案:强制回流触发动画
这个问题的解决方案在于强制浏览器重排,重新计算页面的布局和渲染。这可以通过访问元素的 offsetHeight 属性来实现。以下 JavaScript 函数可完成此操作:
function reflow(elt) { console.log(elt.offsetHeight); }
实现:
要实现该解决方案,请在修改触发动画的 CSS 属性后调用 reflow() 函数。例如:
ul.style.transition = 'none 0s linear'; ul.style.left = '-600px'; ul.style.transition = 'all 0.2s ease-out'; reflow(ul); // Forces a reflow ul.style.left = '0px';
注意:
最近的优化涉及将 console.log(elt.offsetHeight) 替换为 void(elt.offsetHeight),作为优化器不太可能忽略此声明作为潜在的副作用。
以上是为什么我的 CSS 过渡有时无法生成动画?的详细内容。更多信息请关注PHP中文网其他相关文章!