3D transform 启用 GPU 加速
例如 transform3D, scaleZ 等可以开启浏览器硬件加速
实际上并不需要 Z 轴的动画
will-change
当我们的某些行为触发页面进行大面积绘制的时候, 浏览器往往是没有准备的, 只能被动使用 CPU 去计算与重绘. 而will-change
会在真正行为触发之前通知浏览器, 以开启 GPU 准备重绘.
该属性语法:
will-change: auto;
will-change: scroll-position;
will-change: contents;
will-change: trasnform; // or some
will-change: opacity; // or some
will-change: left,top; // or some
will-change:inherit;
will-change:initial;
will-change: unset;
`</pre>
其中 auto 是用来重置的
scroll-position 是通知滚动
contents 是通知内容动画
### 注意事项
`will-change` 虽然可以加速, 但一定要适度使用. 频繁使用 GPU 显然会导致性能(电量)消耗
不要直接写在默认状态中, 因为`will-change`会一直挂着:
<pre>`.will-change{
will-change: transform;
transition: transform .3s;
}
.will-change:hover{
transform: scale(1.5);
}
`</pre>
可以让父元素 hover 的时候声明`will-change`, 这样, 移出的时候回自动`remove`, 触发返回基本上是有效元素范围
<pre>`.will-change-parent:hover .will-change{
will-change:transform;
}
.will-change{
transition:transform .3s
}
.will-change:hover{
transform:scale(1.5)
}
如果使用 JS 添加will-change
一定要及时 remove