CSS优化,提高性能的方法有哪些?

2020-05-27 09:36发布

4条回答
息红泪
2楼 · 2020-05-27 09:36

1,首推的是合并css文件,如果页面加载10个css文件,每个文件1k,那么也要比只加载一个100k的css文件慢。

2,减少css嵌套,最好不要套三层以上。

3,不要在ID选择器前面进行嵌套,ID本来就是唯一的而且人家权值那么大,嵌套完全是浪费性能。

4,建立公共样式类,把相同样式提取出来作为公共类使用,比如我们常用的清除浮动等。

5,减少通配符*或者类似[hidden="true"]这类选择器的使用,挨个查找所有...这性能能好吗?当然重置样式这些必须 的东西是不能少的。

6,巧妙运用css的继承机制,如果父节点定义了,子节点就无需定义。

7,拆分出公共css文件,对于比较大的项目我们可以将大部分页面的公共结构的样式提取出来放到单独css文件里, 这样一次下载后就放到缓存里,当然这种做法会增加请求,具体做法应以实际情况而定。

8,不用css表达式,表达式只是让你的代码显得更加炫酷,但是他对性能的浪费可能是超乎你的想象的。

9,少用css rest,可能你会觉得重置样式是规范,但是其实其中有很多的操作是不必要不友好的,有需求有兴趣的 朋友可以选择normolize.css

10,cssSprite,合成所有icon图片,用宽高加上bacgroud-position的背景图方式显现出我们要的icon图,这是一种 十分实用的技巧,极大减少了http请求。

11,当然我们还需要一些善后工作,CSS压缩(这里提供一个在线压缩 YUI Compressor ,当然你会用其他工具来压缩是十 分好的),

12,GZIP压缩,Gzip是一种流行的文件压缩算法,详细做法可以谷歌或者百度


aoligei
3楼 · 2020-05-27 14:27

优化主要还是朝网络传输方面和减少不必要的渲染考虑

1.发布前压缩CSS,减少数据传输量。

2.合并属性,如margine-left:5px;margine-top:10px 这个就可以合并成一条的。

3.合理设计CSS 布局,注意复用样式,减少渲染上花的时间。class和ID的选择,少用*这种全局匹配,合理设置基本样式(如设置table{})提高复用。

4.减少低效代码的使用,如滤镜,express表达式,!import引入。

5.其它技术,如CSS SPRITE等。

ps:CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position可以用数字能精确的定位出背景图片的位置。

web-马赏
4楼 · 2020-05-28 19:57

加载性能:

1 css压缩:将写好的css进行打包压缩,可以减少很多的体积;

2 css单一样式:当需要下边距和左边距的时候,

很多时候选择:margin: top 0 bottom 0;

但 margin-bottom: bottom;margin-left: left;执行的效率更高;

3 减少使用 @import, 而建议使用link, 因为后者在页面加载时一起加载,前者 是等待页面加载完成之后再进行加载;

选择器性能:

CSS选择符是从右到左进行匹配的。当使用后代选择器的时候,浏览器会遍历所有子元素来确定是否是指定的元素等等;

**避免使用通配规则**

如*{} 计算次数惊人!只对需要用到的元素进行选择

**尽量少的去对标签进行选择,而是用class**

如:#nav li{},可以为li加上nav_item的类名,如下选择.nav_item{}

**不要去用标签限定ID或者类选择符**

如:ul#nav,应该简化为#nav

**尽量少的去使用后代选择器,降低选择器的权重值**

后代选择器的开销是最高的,尽量将选择器的深度降到最低,最高不要超过三层,更多的使用类来关联每一个标签元素

**考虑继承**

了解哪些属性是可以通过继承而来的,然后避免对这些属性重复指定规则




HUANG
5楼 · 2020-05-28 22:31

加载性能:

1 css压缩:将写好的css进行打包压缩,可以减少很多的体积;

2 css单一样式:当需要下边距和左边距的时候,

很多时候选择:margin: top 0 bottom 0;

但 margin-bottom: bottom;margin-left: left;执行的效率更高;

3 减少使用 @import, 而建议使用link, 因为后者在页面加载时一起加载,前者 是等待页面加载完成之后再进行加载;

选择器性能:

CSS选择符是从右到左进行匹配的。当使用后代选择器的时候,浏览器会遍历所有子元素来确定是否是指定的元素等等;

**避免使用通配规则**

如*{} 计算次数惊人!只对需要用到的元素进行选择

**尽量少的去对标签进行选择,而是用class**

如:#nav li{},可以为li加上nav_item的类名,如下选择.nav_item{}

**不要去用标签限定ID或者类选择符**

如:ul#nav,应该简化为#nav

**尽量少的去使用后代选择器,降低选择器的权重值**

后代选择器的开销是最高的,尽量将选择器的深度降到最低,最高不要超过三层,更多的使用类来关联每一个标签元素

**考虑继承**

了解哪些属性是可以通过继承而来的,然后避免对这些属性重复指定规则

渲染性能:

1.慎重使用高性能属性:浮动、定位;

2.尽量减少页面重排、重绘;

重排按照css的书写顺序:

·位置:positon、top、left、z-index、float、dispay

·大小:width、height、margin、padding

·文字系列: font、line-height、color、letter-spacing

·背景边框:background、 border

·其它:anmation、transition

重绘:border、outline、background、box-shadow,能使用background-color,就尽量不要使用background;

3.去除空规则:{};

4.属性值为0时,不加单位;

5.属性值为浮动小数0.**,可以省略小数点之前的0;

6.标准化各种浏览器前缀:带浏览器前缀的在前。标准属性在后;

7.不使用@import前缀,它会影响css的加载速度;

8.充分利用css继承属性,减少代码量;

9.抽象提取公共样式,减少代码量;

10.选择器优化嵌套,尽量避免层级过深;

11.css雪碧图,同一页面相近部分的小图标,方便使用,减少页面的请求次数,但是同时图片本身会变大,使用时,优劣考虑清楚,再使用;

12.将css文件放在页面最上面

可维护性、健壮性:

1 将具有相同属性的样式抽离出来,整合并通过class在页面中进行使用,提高css的可维护性;

2 继上一条,oocss也是提高css性能的途径之一,通过定义可复用的、语义化良好的基础类,然后添加到html中,这也是很多ui框架都在使用的一种方法,例如:class="btn btn-active btn-blue";

3 样式与内容分离:讲css代码定义到外部css中;

4 容器与样式分离;



相关问题推荐

  • 回答 120

    相对前几年来说,要高上不少了,毕竟入行的人也是越来越多了,基础的工作对应想要参与的人群基数越来越大,但是对于高端人才的需求还是很多,人才还是相对稀缺性的。所以,想要学web或者其他技术也一样,别等,别观望。web前端就业方向特别多包括web前端开发...

  • 回答 25

    相对定位和绝对定位是定位的两种表现形式,区别如下:一、主体不同1、相对定位:是设置为相对定位的元素框会偏移某个距离。2、绝对定位:absolute 脱离文档流,通过 top,bottom,left,right 定位。二、特点不同1、相对定位:在使用相对定位时,无论是否进行移...

  • 抓包是什么意思?2020-04-01 17:36
    回答 7
    已采纳

    抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。抓包可以通过抓包工具来查看网络数据包内容。通过对抓获的数据包进行分析,可以得到有用的信息。目前流行的...

  • 回答 89

    常用的前端框架有Bootstrap框架、React框架、Vue框架、Angular框架、Foundation框架等等

  • 回答 65
    已采纳

    前端是目的就业前景非常不错的一个计算机技术,但是自学的话还是有一定难度的,网络上自学是碎片化的,同时互联网技术跟新换代快,自己的话比较吃力也学习不到最新的技术。

  • SSR 是什么意思?2020-03-20 18:56
    回答 6

    SSR就是一台服务器,可以利用 SSR 在远程的服务器上配置 SSR,使其能够成为 SSR 节点,这样本地电脑或者其它设备利用 SSR 节点实现 VPN 或者远程上网及游戏加速等方面。ShadowsocksR(简称 SSR)是 Shadowsocks 分支,在 Shadowsocks 的基础上增加了一些数据...

  • 回答 52
    已采纳

    计算机培训方向比较多,建议找适合自己的方向选择培训编程类:JAVA、WEB、Python、C/C++、C#等测试类:软件测试运维类:云计算、网络安全设计类:UI设计、3D建模等

  • 回答 11

    1、代码判断xAxis: {type: 'time',splitLine: {show: false},interval: 3600, // 设置x轴时间间隔axisLabel: {formatter: function(value, index) {return liangTools.unix2hm(value)}}},首先要把xAxis 显示类型设置成time,然后设置对应X轴......

  • 回答 8

    HTML5 + CSS + JavaScript 开发 跨平台重用代码 

  • 回答 4

    采用rem单位自动响应,并提供独有栅格化系统快速定义宽高、边距节省css代码量,同时总结各大型移动端网页,提供一套ui颜色搭配规范,尺寸规范,字体规范等。

  • 回答 10

    iView UI、ioni、SUI

  • 回答 6

     jQTouch 

  • 回答 4

    如果只是普通的移动端用vue react 或者dva 如果是要编译成小程序什么的或者混生 就用uni-app(对应vue语法)taro(对应react) 或者纯原生 这个没有限制的,自己怎么舒服怎么来

  • 回答 4

    因为可以运用在网页和小程序的开饭中,而且开源,用着便宜,企业都很喜欢

  • 回答 10

    一、Visual Studio Code下载地址:https://code.visualstudio.com/微软在2015年4月30日Build 开发者大会上正式宣布了 Visual Studio Code 项目:一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器。Visual Stud...

  • 回答 9

    jQuery自带淡入淡出效果 https://www.w3school.com.cn/jquery/jquery_fade.asp 看看这个 

没有解决我的问题,去提问