为什么加了 will-change: transform 还是没提升为合成层?
我在做一个动画卡片,给元素加了 will-change: transform,但 Chrome DevTools 的 Layers 面板里还是没看到它被提升成独立合成层,这是为啥?
我原本以为只要加了这个属性就会自动创建合成层,结果滚动或 transform 动画时还是触发了重排。是不是还需要配合其他 CSS 属性?比如:
.card {
will-change: transform;
transform: translateZ(0);
}
这样写才有效?但文档说法又不太一致,有点懵。
实测有效的写法有两种:
1. 加个 transform 属性激活:
2. 或者用 isolation 强制独立:
第一种方式比较常见,translateZ(0) 相当于告诉浏览器"我要用3D变换"。第二种 isolation 属性更直接,就是强制独立层。
Chrome 有时候就是欠收拾,不给点明确的指令它就不干活。代码放这了,两种你随便挑一个用,都能解决问题。