CSS 使用转换和不透明度避免触发器布局

示例

更改某些CSS属性将触发浏览器同步计算样式和布局,当您需要以60fps进行动画处理时,这是一件坏事。

设置动画left并top触发布局。

#box {
  left: 0;
  top: 0;
  transition: left 0.5s, top 0.5s;
  position: absolute;
  width: 50px;
  height: 50px;
  background-color: gray;
}

#box.active {
  left: 100px;
  top: 100px;
}

演示花费了11.7毫秒用于渲染,花费9.8毫秒进行绘画

使用transform相同的动画进行动画处理。

#box {
  left: 0;
  top: 0;
  position: absolute;
  width: 50px;
  height: 50px;
  background-color: gray;

  transition: transform 0.5s;
  transform: translate3d(0, 0, 0);
}

#box.active {
  transform: translate3d(100px, 100px, 0);
}

演示相同的动画,把1.3ms进行渲染,2.0ms的画。