最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

怎么解决css中动画卡顿的问题

来源:动视网 责编:小采 时间:2020-11-27 20:12:37
文档

怎么解决css中动画卡顿的问题

怎么解决css中动画卡顿的问题:总结解决CSS3动画卡顿方案1.尽量使用transform做动画,避免使用height,width,margin,padding等;原因是: 根据定义,CSS 的transform属性不会更改元素或它周围的元素的布局。transform属性会对元素的整体产生影响,它会对整个元素进行缩放、旋转、移动处理。
推荐度:
导读怎么解决css中动画卡顿的问题:总结解决CSS3动画卡顿方案1.尽量使用transform做动画,避免使用height,width,margin,padding等;原因是: 根据定义,CSS 的transform属性不会更改元素或它周围的元素的布局。transform属性会对元素的整体产生影响,它会对整个元素进行缩放、旋转、移动处理。

总结解决CSS3动画卡顿方案

1.尽量使用transform做动画,避免使用height,width,margin,padding等;

原因是:
根据定义,CSS 的transform属性不会更改元素或它周围的元素的布局。transform属性会对元素的整体产生影响,它会对整个元素进行缩放、旋转、移动处理。

这对浏览器来说是个好消息 !浏览器只需要一次生成这个元素的位图,并在动画开始的时候将它提交给GPU去处理 。之后,浏览器不需要再做任何布局、 绘制以及提交位图的操作。从而,浏览器可以充分利用 GPU 的特长去快速地将位图绘制在不同的位置、执行旋转或缩放处理。

对于高度较慢的原因:
在动画的每一帧中,浏览器都要执行布局、 绘制、 以及将新的位图提交给 GPU。我们知道,将位图加载到 GPU 的内存中是一个相对较慢的操作。

浏览器需要做大量工作的原因在于每一帧中元素的内容都在不断改变。改变一个元素的高度可能导致需要同步改变它的子元素的大小,所以浏览器必须重新计算布局。布局完成后,主线程又必须重新生成该元素的位图。

2.要求较高时,可以开启浏览器开启GPU硬件加速。

比如:
一、现在,像Chrome, FireFox, Safari, IE9+和最新版本的Opera都支持硬件加速,当它们检测到页面中某个DOM元素应用了某些CSS规则时就会开启,最显著的特征的元素的3D变换。

.cube { 
 -webkit-transform: translate3d(250px,250px,250px)
 rotate3d(250px,250px,250px,-120deg)
 scale3d(0.5, 0.5, 0.5);}

二、可是在一些情况下,我们并不需要对元素应用3D变换的效果,那怎么办呢?这时候我们可以使用个小技巧“欺骗”浏览器来开启硬件加速。

虽然我们可能不想对元素应用3D变换,可我们一样可以开启3D引擎。例如我们可以用transform: translateZ(0); 来开启硬件加速 。

.cube { 
-webkit-transform: translateZ(0); 
-moz-transform: translateZ(0); 
-ms-transform: translateZ(0); 
-o-transform: translateZ(0); 
transform: translateZ(0); /* Other transform properties here */}

在 Chrome and Safari中,当我们使用CSS transforms 或者 animations时可能会有页面闪烁的效果,下面的代码可以修复此情况:

.cube { 
-webkit-backface-visibility: hidden; 
-moz-backface-visibility: hidden; 
-ms-backface-visibility: hidden; 
backface-visibility: hidden; 
-webkit-perspective: 1000; 
-moz-perspective: 1000; 
-ms-perspective: 1000; 
perspective: 1000; /* Other transform properties here */}

文档

怎么解决css中动画卡顿的问题

怎么解决css中动画卡顿的问题:总结解决CSS3动画卡顿方案1.尽量使用transform做动画,避免使用height,width,margin,padding等;原因是: 根据定义,CSS 的transform属性不会更改元素或它周围的元素的布局。transform属性会对元素的整体产生影响,它会对整个元素进行缩放、旋转、移动处理。
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top