CSS中的继承与层叠

在了解CSS的继承与层叠之前,首先要了解一下html的文档树 以及选择器的特殊性和重要性(!important)!

CSS 继承

子元素将会继承父元素的css样式

在DOM树中,该属性样式会传递到父节点的最后一个子节点 知道没有节点为止
比如:

<div>
    哈哈 我是父元素
    <p>我是子元素</p>
    <p>我是子元素</p>
    <p>我是子元素</p>
</div>

设置<p>的CSS样式

div {
    color: red;
}

猜猜会得到什么样的结果???
div以及其中的p标签内的文本都会变成红色!!!

继承.PNG

!!但凡是都有特例,子元素并不是所有的属性都能够继承,比如大多数框模型(外边距、内边距、背景、边框)可以自己试着写一下看看有什么效果··

其中继承样式 无特殊性 (连0都没有)*(通配选择器的特殊性为0)
要注意没有特殊性特殊性为0还是有很大差别的
举个例子:

 * {
         color: brown;
     }
     #text {
         color: blue;
     }
        </style>
 <div id=text> 
        哈哈 我是父元素
        <p>我是子元素</p>
        <p>我是子元素</p>
        <p>我是子元素</p>
    </div>

现在文本的颜色变成了什么样呢??
其实是这样


特殊性0&无特殊性.PNG

特殊性为0 还是战胜了 无特殊性!!

CSS 层叠

让我们想想若两个规则的特殊性相同元素的最终样式会变成什么样???
(快想想CSS的中文名称是什么---)

<style>
p {
color: red;
}
p {
color: yellow;
}
</style>

p的文本颜色到底是什么样的呢?其实他是黄色的!

那我们现在来说一下CSS的层叠规则:

1. 按权重和来源排序
2. 按特殊性排序
3. 按顺序排序

1. 按权重和来源排序

标志!important的规则的权重要高于没有!important标志的规则
CSS三种样式来源:创作人员、读者和用户代理 权重比较
1.读者的重要声明 !important
2.创作人员的重要声明
3.创作人员的正常声明
4.读者的正常声明
5.用户代理(浏览器默认样式)声明

2.按特殊性排序

不同类型的选择器特殊性不同
其中ID选择器 > 类选择器 > 标签选择器
但是 这些选择器的属性若没有标志!important则会被内联样式所覆盖
比如:

<div id=text style="color:blue">   //为div添加内联样式
    哈哈 我是父元素
    <p>我是子元素</p>
    <p>我是子元素</p>
    <p>我是子元素</p>
</div>

为其设置CSS样式

<style>
div {
color: red;
}
#text {
color: yellow;
}
</style>

结果 字体变成了蓝色!!


内联样式.PNG
3.按照出现顺序排序

这一条就不多说了
当两条规则的特殊性相同时 最后出现的样式为准
所以我们通常把主样式放在最后

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,610评论 1 45
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,790评论 1 92
  • CSS基础 本文包括CSS基础知识选择器(重要!!!)继承、特殊性、层叠、重要性CSS格式化排版单位和值盒模型浮动...
    廖少少阅读 3,130评论 0 40
  • 若有这样一个人 在不经意间 走进了你的生命 可是你 却不知道他的所有的一切 你只能在一些事和人中 感受到他的存在 ...
    念起的灵阅读 284评论 0 0
  • 成长需要有一些空间去信马由缰 在生命缱绻的岁月里 让大喜大悲蔓延 你值得用尽所有勇气去坚信 烈日晴空种下的葱茏 定...
    秦良玉阅读 338评论 2 7