css选择器的优先级和权重问题

hxy 2020-03-11 AM 116℃ 0条 访问: 117 次

CSS选择器的种类:

1.id选择器如:(id=”name”,id=”name_txt)(*name)
2.class选择器(如:class=”head”,class=”head_logo”)(#head)
3.标签选择器(如:body,div,p,h1,form)
4.全局选择器(如:*号)
5.组合选择器(如:.head .head_logo,注意两选择器用空格键分开)
6.继承选择器(如:div p,注意两选择器用空格键分开)
7.伪类选择器(如:就是链接样式,a元素的伪类,4种不同的状态:link、visited、active、hover。)

CSS的优先级

选择器的优先级分为两种情况,第一种是选择器在同一级别的情况下,第二种是选择器在不同级别的情况下
不同选择器级别:
1.在属性后面使用 !important 会覆盖页面内任何位置定义的元素样式。
作为style属性写在元素内的样式
2.id选择器
3.类选择器
4.标签选择器
5.通配符选择器
6.浏览器自定义或继承
总结:!important > 行内样式>ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性
2.同一级别的选择器的优先级:
同一级别中后写的会覆盖先写的样式

CSS选择器的权重分析:

第一等:代表 内联样式,如: style=””,权值为:1000。
第二等:代表 ID选择器,如:#content,权值为:0100。
第三等:代表 类,伪类和属性选择器,如: .content , :hover , [type="text"] 权值为:0010。
第四等:代表 标签选择器和伪元素选择器,如: p ,::first-line 权值为:0001。
通配符、子选择器、相邻选择器等的。如: *、>、+,权值为:0000。
继承的样式没有权值,通配选择器定义的规则优先级高于元素继承过来的规则的优先级。
最后比较特殊的一个标志!important(权重),它没有特殊性值,但它的优先级是最高的,为了方便记忆,可以认为它的特殊性值为1,0,0,0,0。

eg:

<div id="flag">
    <p>下载简历模板</p>
    <p>然后邮件到</p>
    <p id="email">123456@123.com</p>
</div>

css:

#flag p {
    font-size: 14px;
}

#email {
    font-size: 1px;
}

最终123456@123.com的font-size为14px。

原因:

内联样式(<div style=)的权值1000;ID选择器(#开头)的权值为100;Class类选择器(.开头)的权值为10;HTML 标签选择器(div, P, span等)的权值为 1
#flag p 权值:100 + 1
#email 权值:100
最终样式选总权值最大的,所以为#flag p的样式

标签: none

非特殊说明,本博所有文章均为博主原创。

评论啦~