我正在尝试使用 CSS will-change 属性而不是 translateZ(0) hack。
我了解需要在元素更改之前应用该属性。但我怀疑它是否需要在变化时也应用。
我有兴趣知道是否需要在元素转换之前和期间应用该属性,或者仅在之前应用该属性。
我正在尝试使用 CSS will-change 属性而不是 translateZ(0) hack。
我了解需要在元素更改之前应用该属性。但我怀疑它是否需要在变化时也应用。
我有兴趣知道是否需要在元素转换之前和期间应用该属性,或者仅在之前应用该属性。
will-change
当相应的 CSS 属性正在更改(或更改)时,您不需要应用。
的主要目标will-change
是帮助浏览器“提前”应用一些对渲染器来说代价高昂的更改(例如,为将更改其的元素创建新的堆叠上下文,opacity
而不是在不透明度开始更改时动态创建它)。如果更改已经发生,则不再需要进行此类预优化。
will-change 属性的真正目的是警告浏览器所选元素将在未来的进程中发生变化,因此浏览器可以提前设置适当的优化。
某些属性在 will-change 中指定时将不起作用,因为浏览器不会对大多数属性的更改执行任何特殊优化。不过,指定它们仍然是安全的;它根本没有效果。在这种情况下 (translate) will-change 会产生影响。
在更改发生之前和之后使用脚本代码打开和关闭 will-change 是一个很好的做法,这是您问题的答案。