博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSS选择器
阅读量:6590 次
发布时间:2019-06-24

本文共 1094 字,大约阅读时间需要 3 分钟。

看了一下最近写的css代码,发现基本只用到了id选择器(js里)、后代选择器和类选择器(因为听大牛推荐使用类选择器,然后就开始大篇幅使用。。。)。所以想深入学习一下css选择器和css的效率优化,先记录所学的一部分,以备后续补充。

选择器效率由高到低:

id选择器(#myid)类选择器(.myclassname)标签选择器(div,h1,p)相邻选择器(h1+p)子选择器(ul > li)后代选择器(li a)通配符选择器(*)属性选择器(a[rel="external"])伪类选择器(a:hover,li:nth-child)

在这里,我们需要知道的是浏览器是如何读取选择器的。Chris Coyier曾在《Efficiently Rendering CSS》一文中说过“浏览器读取你的选择器,遵循的原则是从选择器的右边到左边读取。换句话说,浏览器读取选择器的顺序是由右到左进行”。

选择器的最后一部分,也就是选择器的最右边,部分被称为“关键选择器”,它将决定你的选择器的效率如何?是高还是低。“越具体的关键选择器,其性能越高”举个例子: #myId span和span #myId谁的效率更高?答案是后者效率更高,因为后者的关键选择器更具体。

选择器优先级:

图片描述

行内样式就是这种语法的<标签名 style="属性1;属性2;属性3;属性4">内容</标签名>。例如这样:
图片描述

使用规则

规则 说明
行内样式会被!important覆盖。 不推荐使用!important。!important的优先级比行内优先级高,有时候样式一直不生效就可能不知道在哪写了个!important。
优先级不同的选择器作用在同一元素上,优先级高的生效。
优先级相同的选择器在同一元素上,以后出现的为准。 如果一直修改一个样式不生效,可能是被后出现的同名选择器给覆盖了。。。。
选择器越具体,优先级越高。
优先级相同,与元素近的选择器生效。 head里和.css文件里,head里的选择器生效。

注:

!important说明:
图片描述
如果不使用!important,第二个样式会覆盖第一个,但是由于第一个有!important,所以在字号设置上优先级更高。

使用建议

建议 说明
避免将通用选择器作为通用选择器。 匹配开销大。
避免id选择器用标签和类。
避免class选择器用标签。
用class替换多层标签选择器。 减少css查找。
避免使用子选择器。 后代选择器是开销最最最最大的。
避免正则的属性选择器。
删除没用的样式。 用工具检索是否用到。

结束语:诶,看了一圈发现还是要用类选择器...(捂脸)

转载地址:http://jekio.baihongyu.com/

你可能感兴趣的文章
字符串连接[不用库函数]
查看>>
使用Hystrix实现自动降级与依赖隔离-微服务
查看>>
Parcelbale接口
查看>>
新建一个express工程,node app无反应
查看>>
Python去掉字符串中空格的方法
查看>>
[转] 用GDB调试程序(五)
查看>>
OCM_第十一天课程:Section5 —》数据仓库
查看>>
来自一个用户的体验-Alpha项目测试
查看>>
水晶报表
查看>>
[转载]测试程序执行时间
查看>>
[转载]回调函数
查看>>
kettle-多文件合并
查看>>
GitHub for Windows一般操作
查看>>
MyEclipse6.5的反编译插件的安装
查看>>
Jenkins + Ansible + Gitlab之ansible篇
查看>>
cogs 539. 牛棚的灯
查看>>
SQL SERVER 备份数据库到指定路径语句
查看>>
3.Knockout.Js(属性绑定)
查看>>
C++三大特性之多态
查看>>
v140平台工具集与v110工具集选择
查看>>