mj——css选择器总结及优先级问题

css选择器

选择器举例
标签选择器div,p,li等标签名的选择器
类选择器给元素添加class类属性,利用属性名来选择,选择时为“.+属性名”
ID选择器给元素添加ID属性,利用属性名来选择 ,选择时为“#+属性名”
全局选择器匹配所有元素,*
后代选择器(继承选择器)选择器之间用空格隔开,匹配前面父元素下的所有符合条件的后代
子代选择器 (包含选择器)选择器之间用大于号隔开 ,匹配前面父元素下所有符合条件的第一级后代
群组选择器选择器之间用逗号隔开,匹配多个符合不同条件的元素
伪类选择器a标签的四种样式,代表四种状态,link,visited,hover,active,有顺序之分,顺序变化则不显示 ,使用方法为:“a:hover{样式}”
字符串匹配的属性选择器^,$,*,分别对应开始,结尾,包含
兄弟选择器相邻兄弟选择,p+div{样式},只对p后面的div元素有效,这里要注意的是这两个元素不是包含关系,是并列关系

css选择器优先级

如果,css样式不冲突,则叠加显示,如果样式发生冲突,先按照优先级选取,如果优先级相同,则按照就近原则选取样式,即后写的样式覆盖先写的样式。
不同选择器优先级如下:
在属性后面使用!important>行内元素样式>id选择器>class选择器>标签选择器>通配符选择器>浏览器自定义或者继承的样式
如果涉及组合选择器,优先级计算方法如下:
内联选择器>ID选择器>类选择器>标签选择器优先级依次为A,B,C,D。
A,若存在内联选择器,则A=1,反之为0;
B,为id选择器的出现次数;
C,为类选择器,属性选择器,伪类选择器的出现次数;
D,为标签选择器和伪元素选择器出现的次数。
每个选择器之间数字不相加。
例如:
例子来自 https://www.cnblogs.com/yugege/p/9918232.html

li                                  /* (0, 0, 0, 1) */
ul li                               /* (0, 0, 0, 2) */
ul ol+li                            /* (0, 0, 0, 3) */
ul ol+li                            /* (0, 0, 0, 3) */
h1 + *[REL=up]                      /* (0, 0, 1, 1) */
ul ol li.red                        /* (0, 0, 1, 3) */
li.red.level                        /* (0, 0, 2, 1) */
a1.a2.a3.a4.a5.a6.a7.a8.a9.a10.a11  /* (0, 0, 11,0) */
#x34y                               /* (0, 1, 0, 0) */
li:first-child h2 .title            /* (0, 0, 2, 2) */
#nav .selected > a:hover            /* (0, 1, 2, 1) */
html body #nav .selected > a:hover  /* (0, 1, 2, 3) */

比较的时候从左往右比较,相等则右移,若四位相等,遵循就近原则。

特殊情况

由上可知,内联样式优先级最高,但是要是想要覆盖内联样式,则可用!important,但是尽量不要使用,因为当给内联样式使用了它之后,无论外部怎么写都不能覆盖它,所以不能再内联样式中使用它。
这里有个点:若是怎么设置容器的宽度都不生效,那么需要检查是不是写了max-width,因为它可以超越width!important

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值