本篇博文由于夹杂了本人的理解以及方便初学者浏览的推导过程和基本概念补充,故篇幅较长。结论在最后,可直接跳至结尾查看
更多文章请查看:sawyersven.github.io
在了解今天的核心内容选择器的优先级之前,我们先复习一下关于CSS选择器:
CSS选择器
既然我们要搞懂的是CSS选择器的优先级,那我们首先肯定要知道CSS有哪些选择器:
- 类型选择器/元素选择器(如:p,div,ul,li,span)
- 类选择器(如:class=“header” => .header,class=“body” => .body)
- ID选择器(如:id=“box => #box,id=“name” => #name”)
- 伪类选择器(如:.box:hover,a:active,li:first-child)
- 通用选择器(*)
- 属性选择器(input[type=“text”],button[type=“submit”])
- 基于关系的选择器(ul li,div > span,div + div,div + p)
以上7种选择器基本上包括了我们日常工作中会用到的绝大多数选择器形式,此外还有!important和元素内联的style属性,这两种我们后边会讲。
复习了关于CSS选择器的内容,我们接下来走进今天的主题 - CSS选择器的优先级
举个栗子
- 有一天数学老师在课间告诉大家体育老师生病了,所以下午的体育课改上数学课。怕有的同学没收到通知,就在黑板上写下了:
<div class="blackboard">
<p>由于体育老师生病,所以下午的体育课改上数学课</p>
</div>
.blackboard{
background:#000 //黑板是黑的噻
}
p{
color:#fff; // 老师用白色粉笔写的
}
于是同学们在上课的时候就看到了黑板上的内容:
- 班长觉得后排睡觉的小明看不清楚黑板上的字,于是走上讲台用红色的粉笔覆盖在老师的字上把这句话描成了红的:
p{
color:#fff; //老师先用白色粉笔写
}
p{
color:#ff0000; //班长后用红色粉笔写
}
所以黑板上的字就变成了这样:
班上调皮捣蛋的阿辉在打闹的时候不小心把一瓶蓝色的墨水洒到了黑板上,于是这行字又变成了蓝色墨水色:
<div class="blackboard">
<p class="blue-ink">由于体育老师生病,所以下午的体育课改上数学课</p>
</div>
p{
color:#fff //老师先用白色粉笔写
}
.blue-ink{
color:blue; // 阿辉泼上去的蓝色墨水
}
p{
color:#ff0000; //班长后用红色粉笔写
}
班长觉得黑板上蓝色的字很难看清,就又用红色粉笔准备写成红色,但是发现由于墨水的湿度黑板上用粉笔已经写不了了,所以很生气。跑去办公室叫来了班主任。
班主任灵(瞎)机(机)一(8)动(搞)用涂改液涂在墨水的印记上,然后这行字又变成了白色的:
<p id