好!欢迎访问迷津渡口 现在时间是:

迷津渡口

越感到迷惑 越接近真理

css层叠规则最详细教程

这是小指根据书籍和资料自行总结的方法,看完你肯定比一般人更了解css层叠规则!!!

css翻译为层叠样式表,层叠是浏览器最终确定一个元素属性的方式。层叠机制如何起作用呢?

以页面上一个<h1>元素的color属性为例,浏览器确认的流程:

第一步:收集所有样式表

样式表包含Web页面作者定义的样式表,读者自行增加的样式表和浏览器的默认样式表。

第二步:找到所有匹配的声明

检查所有样式表,找出所有匹配<h1>元素而且包含color属性的规则。

第三步:对所有匹配的规则排序

按重要性从高到低排序为:Web页面作者定义规则 > 读者自定义规则 > 浏览器默认规则。

即Web页面作者定义规则最优先,读者自定义规则又优先于浏览器默认规则。

第四步:按特定性对所有声明排序(重要!)

CSS选择器的权重顺序:

important > 内联 > ID > 类 | 伪类 | 属性选择 > 标签 > 伪对象 > 继承 > 通配符

将其数字化,初始化权重值为00000。

最高位代表权重越大,最低位代表权重越低。


选择器属性important内联id类、伪类、属性选择标签、伪类元素
增加值100001000100101


这个表格包含了所有计算方法,下面以例子简单解释一下:

HTML代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Example For CSS</title>
<style type="text/css">
#main-div h1 {color: red !important;}
</style>
<link type="text/css" rel="stylesheet" href="style.css"/>
</head>
<body>
<div id="main-div" class="main-content">
<div id="sub-div" class="sub-content">
<h1 id="first-heading" style="color: maroon;">Example for css</h1>
</div>
</div>
</body>
</html>

样式表style.css里的选择器:

#sub-div h1 {color: green;}
.sub-content h1 {color: brown;}
div#sub-div h1 {color: blue;}
#main-div h1 {color: yellow;}
div#main-div h1{color: gray;}
h1#first-heading {color: black;}
div#main-div div.sub-content h1#first-heading {color: purple;}
h1#first-heading {color: black !important;}

style.css里面选择器按顺序权重值为

  1. #sub-div h1
    一个id为100一个标签为1因此权重值为:100+1=101

  2. .sub-content h1
    一个类为10一个标签为1因此权重值为:10+1=10

  3. div#sub-div h1
    一个id为100两个标签为2因此权重值为:100+2=102

  4. #main-div h1
    一个id为100一个标签为1因此权重值为:100+1=101

  5. div#main-div h1
    一个id为100两个标签为2因此权重值为:100+2=102

  6. h1#first-heading
    一个id为100一个标签为1因此权重值为:100+1=101

  7. div#main-div div.sub-content h1#first-heading
    两个id为200一个类为10两个标签为2因此权重值为:200+10+2=202

  8. h1#first-heading { !important}
    一个important标记为10000一个id为100一个标签为1因此权重值为:10000+100+1=10101

  9. 内部样式表<style>的规则:

    #main-div h1 { !important;}
    一个important标记为10000一个id为100一个标签为1因此权重值为:10000+100+1=10101

注意!!!

id和类的实际位置是完全无关紧要的,只要包含类选择器权重就加10,只要包含id就加100。

也许在我们看来#first-heading是最详细的,但是在浏览器看来它和#main-div或者#sub-div的权重是一样的!!!

再看内联表里面的style:

  • style="color: maroon;"
    内联样式值为1000。

统计之后发现

h1#first-heading {color: red !important;}
#main-div h1 {color: black !important;}

选择器的权重最高为10101,两个权重值一样,还不能判断,看最后一步。

第五步:对于冲突的规则,按照选择器在样式表出现的顺序

对于权重一样的选择器,样式表后面的选择器权重高于前面的选择器。

内部样式表和外部样式表权重一样,冲突规则一样看引用的顺序,后引用的权重高。

样式代码里外部样式表后引用,因此外部样式表的权重高于内部样式表的权重。

因此,最终可以确定h1的颜色为:red红色,起作用的选择器为:

h1#first-heading {color: red !important;}

注意:

如果有多个css外部样式表和内部样式表,相当于按引用顺序合并成一个文件后再排序。

所以为了内部样式表起作用,一般把内部样式表放在最后。


其他规则:

如果没有办法找到适合的选择器,则使用继承,继承也没有则使用默认规则。

点赞1
 标签: css层叠规则教程
   支持一下
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
 点赞
 签到
 表情
 图片
 代码
提交评论

清空信息
关闭评论
 00:00/00:00
我想和你虚度时光 - 花房姑娘(9)
  1. 恋恋风尘
  2. 恋恋风尘
  3. 恋恋风尘
  4. 恋恋风尘
  5. 恋恋风尘
  6. 恋恋风尘
  7. 恋恋风尘
  8. 恋恋风尘
  9. 恋恋风尘