如何优化css(如何优化css性能)-冯金伟博客园

CSS性能优化分析

接下来我们来看一个动画效果(类似于通常的页面滚动功能),一个球沿着一定的路径移动。最简单的方法是实时调整它们的left和top属性,并使用css动画。

运行时,即使在电脑浏览器上,也会隐约感觉动画不流畅,更别说在移动终端上60fps的流畅效果了。这是因为top和left的变化会触发浏览器的回流和重绘,整个动画过程会不断触发浏览器的重渲染,对性能影响很大。

为了解决这个问题,我们在transform中使用translate()替换top和left。

这时候我们会发现整个动画效果流畅了很多,动画运动过程中没有出现重画和回流。那么为什么transform没有为repaint做准备呢?原因是transform动画由GPU控制,支持硬件加速,不需要软件渲染。

浏览器收到页面文档后,会将文档中的标记语言解析成DOM树。DOM和CSS结合起来形成了浏览器构建的页面的呈现树。渲染树包含了大量的渲染元素,每一个元素都会被分成一层,每一层都会被加载到GPU中,形成一个渲染纹理。但是GPU中图层的变换不会触发重画,这与3D绘图功能非常相似。最后,这些使用transform的图层将由独立的合成器进程进行处理,移动时的变化是独立的,不会影响页面的其他元素。重排和重绘是由影响页面的其他层元素引起的。可以理解为其他元素都在一层空,所以一层移动其他层也会受到影响,transform创建一个新的复合层,由GPU独立变换,会跟随。

此时,你可能会问浏览器什么时候会创建一个独立的复合层。其实一般是以下几种情况:

因为GPU进程会为它打开一个新的复合层,不会影响默认的复合层(也就是普通的文档流),所以不会影响周围的DOM结构,属性的变化也会交给GPU处理,不会重新排列。还有3D动画,转场动画,不透明度属性,还有一些标签可以让GPU process打开一个新的复合图层。这些方法被称为硬件加速方法。你可以想象一下,新的复合层和默认的复合层是两幅画,彼此独立,互不影响。减少重排的方法:要么减少次数,要么减少影响范围。创建新的复合层是第二种优化方法。虽然绝对布局是从文档流中分离出来的,但它不会创建新的复合层,所以当绝对布局发生变化时,不会影响普通文档流的渲染树,但仍然会绘制整个默认的复合层,这将对普通文档流产生影响。普通文档流是默认的复合层。不要介意我把它们互换使用。如果想用硬件加速来降低重排的影响,请不要过度使用。创建一个新的复合层需要额外的消耗,比如更多的内存消耗,在使用硬件加速的时候,和z-index一起使用,使新的复合层的元素级别尽可能的高。

(1)转换

(2)不透明

(3)过滤器

(1)记忆。如果GPU加载大量纹理,很容易出现内存问题,尤其是在移动端。

(2)用GPU渲染会影响字体的反走样效果。这是因为GPU和CPU的渲染机制不同,即使硬件加速最终停止,动画过程中文字依然会模糊。

1.transform会用GPU硬件加速,性能更好。position

top/left会触发大量的重排和重绘,对性能影响很大。

2.硬件加速的工作原理是新建一个复合层,然后用复合线程渲染。

3.3D动画和2D动画的区别。2D动画将在动画开始和结束时触发两次重新渲染。

4.使用GPU可以优化故宫动画,但是不要滥用,会有内存问题。

5.了解强制触发硬件加速的变换技巧,使用GPU友好的CSS属性。

参考文章:https://zhuanlan.zhihu.com/p/78230297

El-scrollbar是elementui附带的页面滚动条。如果你使用页面滚动条,我们发现很明显你卡在ie浏览器里了。但是用el-scrollbar滚动页面会感觉流畅很多,因为页面滚动会引起重排和重绘,但是用transform不会引起el-scrollbar。所以使用el-scrollbar会感觉流畅很多,转移订单移除overflow:hidden会更流畅,因为这个样式会覆盖el-scrollbar的样式。

CSS是什么的缩写,是什么意思?

CSS是级联样式表的缩写,它是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。 CSS目前最新版本为CSS3,是能够真正做到网页表现与内容分离的一种样式设计语言。相对于传统HTML的表现而言,CSS能够对网页中的对象的位置排版进行像素级的精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力,并能够进行初步交互设计,是目前基于文本展示最优秀的表现设计语言。CSS能够根据不同使用者的理解能力,简化或者优化写法,针对各类人群,有较强的易读性。