CSS 三大特性

最近看了许多 CSS 相关的文章,也深刻认识到自身的不足。本文属于查漏补缺,巩固基础知识。

一、CSS 优先级

CSS 的组成单元是样式规则,也就是我们常说的 CSS Rule ,正如我们下面看到的这张图:
css rule

众所周知,CSS 有一个核心特性:当多条样式规则中的同一个属性作用到了同一个元素,这些样式之间就会发生覆盖。

优先级高的 CSS 样式,将覆盖优先级低的 CSS 样式,成为最终网页元素的实际样式。

所以,为了保证页面有序并且正确的渲染,我们需要了解 CSS 优先级规则。大致的规则如下:

!important > 行内样式 > ID 选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性

当然,上述规则可以解决我们 80% 的疑惑,关键的是,还需要理解以下三点:
1. CSS 属性继承(详情请看下文),我们来看一个例子:
首先定义 html 结构:

1
2
3
<div id="box">
<p class="text">Jartto's blog</p>
</div>

为其添加样式规则:

1
2
#box{color: red;}
.text{color: yellow;}

如上代码,那么到底显示什么颜色呢?答案就是 yellow 。你肯定会有这样的疑惑:ID 选择器的优先级高于 Class 选择器,且还有继承,应该是 red 。其实不然,这里不要被误导了,其实 box 提供的 color 对 text 来说只能继承 color 属性,而继承优先级是小于直接作用元素的。请务必明确如下规则:

  • 继承得到的样式的优先级是最低的,在任何时候,只要元素本身有同属性的样式定义,就可以覆盖掉继承值;
  • 在存在多个继承样式时,层级关系距离当前元素最近的父级元素的继承样式,具有相对最高的优先级;

2. CSS 权重计算:
CSS 权重计算其实就是统计选择符中的不同组成元素的个数,并以 (a,b,c,d) 这种形式来判断。其中,abcd分别代表了不同类别的选择符组成元素,且战斗力分别在不同的数量级,a最强,d最弱。从强到弱,这4个字母分别代表的类别是:

  • 内联样式(Inline style) a = 1 – (1,0,0,0);
  • Id选择符 b = 1 – (0,1,0,0)
  • 类选择符 (Class),伪类选择符(Pseudo class),属性选择符(Attribute) c = 1 – (0,0,1,0)
  • 元素选择符(Element),伪元素选择符(Pseudo Element) d = 1 – (0,0,0,1)
    这里引用一张图来说明:
    specificity_calculate_example

3. !important 标识符;
毫无疑问,!important 会有最高的优先级,这也经常让我们执行强制覆写样式。但是需要注意,一定是直接作用元素,不要和继承搞混淆,我们继续用上面的演示代码举例:
html 结构不变:

1
2
3
<div id="box">
<p class="text">Jartto's blog</p>
</div>

样式规则稍作修改,我们增加 !important 规则:

1
2
#box{color: red!important;}
.text{color: yellow;}

明白了上述规则后,我们不难得出结论,结果依然是黄色,因为 !important 再牛,在这里他也是 color 继承,显然干不过直接作用类 text。

深入阅读请查看:
CSS 优先级详细解析

二、CSS 继承性

CSS 继承性是指被包在内部的标签将拥有外部标签的样式性,即子元素可以继承父元素的属性。

有哪些属性是可以继承的呢,我们简单分一下类:
1.font-family,font-size,font-weight 等 f 开头的 CSS 样式;
2.text-align,text-indent 等 t 开头的样式;
3.color;

三、CSS 层叠性

CSS 层叠性是指 CSS 样式在针对同一元素配置同一属性时,依据层叠规则(权重)来处理冲突,选择应用权重高的 CSS 选择器所指定的属性,一般也被描述为权重高的覆盖权重低的,因此也称作层叠。

每个 CSS 选择器都会有一个权重,当两个选择器同时配置同一元素的同一属性时(比如一个设置 color:red,另一个 color:black ),就会产生冲突,而解决冲突的方案就是 CSS 选择器的权重,权重高的来覆盖权重低的。

层叠就是浏览器对多个样式来源进行叠加,最终确定结果的过程。CSS 之所以有“层叠”的概念,是因为有多个样式来源。

四、示例解说

为了巩固上面的知识,我们来高搞一些容易混淆的例子,简单的测试一下。
示例一:

1
2
3
4
5
<div>
<ol>
<li> Jartto's blog </li>
</ol>
</div>

样式规则,定义如下:

1
2
div { color : red!important; }
ol { color : green; }

结果是 green ,因为 div 和 ol 都不是直接作用于 li 元素,所以他们拼的是继承性,根据属性继承的就近原则,显然 ol 更胜一筹。

示例二:

1
2
3
4
5
<div id="box1" class="one">
<div id="box2" class="two">
<div id="box3" class="three"> Jartto's blog </div>
</div>
</div>

CSS 规则如下:

1
2
3
.one .two div { color : red; }
div #box3 { color : yellow; }
#box1 div { color : blue; }

猜一猜,结果是什么?

示例三:

1
2
3
4
5
<div>
<div>
<div>Jartto's blog</div>
</div>
</div>

为其设置如下规则:

1
2
3
div div div { color: green; }
div div { color: red; }
div { color: yellow; }

CSS 规则都作用于文本,权重第一个大于第二个大于第三个(比较标签选择器数量),显示 green。

示例三,来自 CSS 三大特性:

注意:这里摘录的代码只为了演示 CSS 优先级以及层叠性,但是有悖于 CSS 解析规则,详情请参考 探究 CSS 解析原理。

1
2
3
<div id="father" class="c1">
<p id="son" class="c2"> Jartto's blog </p>
</div>

为了演示效果,我们制定如下 CSS 规则:

1
2
3
4
5
#father #son { color: red };
#father p.c2 { color: green };
div.c1 p.c2 { color: yellow };
#father { color: pink !important};
div#father.c1 { color: blue };

我们暂且不去质疑这段代码的正确性,先来分析一下最终的呈现效果:

  • 首先,#father #son { color: red }; 设置了 #father 后代的 #son 字体颜色为 red
  • 其次,#father p.c2 { color: green };div.c1 p.c2 { color: yellow }; 想去作用,但 class 优先级低于 id ,所以 Jartto's blog 仍然为 red;
  • 然后,又设置了 #father { color: pink !important}; ,企图用 !important 去强制使 pink 生效,但是这对 Jartto's blog 来说只是 CSS 继承,根据权重规则,继承权重低于 id ,很显然颜色依然是 red
  • 最后,div#father.c1 { color: blue }; 肯定权重更低了,所以依然无效,最终颜色只能是 red

这是一个极端的例子,但是可以很好的理解这些例子大家可以去 Runjs 在线测试一下,这样有助于更好的理解 CSS 的特性。

五、补充说明

好了,相信到这里,大家对 CSS 的特性也有了深刻的认识。我们来解决一下之前抛出的疑问,再来看看这段拷贝过来的代码:

1
2
3
<div id="father" class="c1">
<p id="son" class="c2"> Jartto's blog </p>
</div>

CSS 规则如下:

1
2
3
4
5
#father #son { color: red };
#father p.c2 { color: green };
div.c1 p.c2 { color: yellow };
#father { color: pink !important};
div#father.c1 { color: blue };

本文的重点也说完了,这里来挑一下刺,看看这段代码的问题:

  1. #father #son { color: red }; 两个 id 选择器,简直是浪费;
  2. id 选择器中使用 !important 这就尴尬了;
  3. div#father 这种写法把 id 选择器变成了一个不精准的类选择器了;
  4. 代码可读性很差,几乎很难把握到重点,全是冗余代码;

可以看到,#son { color: red }; 这样简单一行代码搞定的事情,被写的乱七八糟,漏洞百出。所以,我们不能只写代码,而不知其所以然,否则很有可能产生这样的后果,十分尴尬。

上文基本也涵盖了此部分内容,这里就不赘述了,详情请参考: CSS 三大特性

Jartto
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSS——CSS 三大特性(理论)
流楚丶格念的博客
06-29 4433
文章目录CSS层叠性CSS继承性CSS优先级CSS特殊性(Specificity)总结: 层叠 继承 优先级 是我们学习CSS 必须掌握的三个特性。 CSS层叠性 所谓层叠性是指多种CSS样式的叠加。 是浏览器处理冲突的一个能力,如果一个属性通过两个相同选择器设置到同一个元素上,那么这个时候一个属性就会将另一个属性层叠掉 比如先给某个标签指定了内部文字颜色为红色,接着又指定了颜色为蓝色,此时出现一个标签指定了相同样式不同值的情况,这就是样式冲突。 一般情况下,如果出现样式冲突,则会按照CSS书写的顺序
css三大特性以及页面布局三大核心及属性书写顺序
weixin_45899362的博客
03-01 328
css三大特性以及页面布局三大核心 1.css三大特性 层叠性:相同选择器设置相同样式,样式冲突,此时一个样式就会覆盖另一个样式,就近原则 继承性:子标签会继承父标签的某些样式,恰当使用可以简化代码,降低css样式的复杂性,可以继承和文字相关的样式(text-, font-, line-这些元素开头的属性,以及color属性) 优先级: 1.选择器相同,执行层叠性 2.选择器不同,权重如下图 2.页面布局三大核心 1.盒子模型(Box Model) 组成:边框,外边距,内边距,实际内容 具体操作参照w3
11-CSS基础-CSS三大特性
weixin_33749242的博客
10-04 106
CSS三大特性 继承性 什么是继承性? 作用: 给父元素设置一些属性, 子元素也可以使用, 这个我们就称之为继承性 示例代码: <style> div{ color: red; } </style> <...
CSS3核心特性介绍
大道至简
10-28 446
以下介绍四个CSS3常用的特性:圆角处理、变形(偏移、旋转等)、媒体查询、弹性布局;幸福的生活来之不易,在没有CSS3的日子里,要实现这些功能简直就是前端开发者的噩梦。而且更值得欣慰的是,随着如谷歌、火狐之类的高版本浏览器日渐普及,我们完全可以忽略掉那些不兼容的情况:什么,有问题?升级下浏览器呗!
CSS核心属性 (文本、列表、背景、Float属性)
weixin_43668201的博客
07-27 377
关于文本的css属性 CSS三大特性(机制):特殊性、继承性、层叠性。 特殊性:就是上一篇说的权重值问题。 继承性:子元素会继承父元素的一些属性。 层叠性:样式产生冲突时,会如何加载 (1)选择器权重大的优先加载 (2)权重一样时,按照文件的读写顺序;后写的会覆盖先写的样式。 属性:属性值 (1)每个css样式都必须由两部分组成:选择符(selector)和声明(Decleratio...
七、CSS 三大特性(完整详细解析)
zep
04-23 325
** CSS 三大特性(完整详细解析) ** 1.优先级: 定义CSS样式时,经常出现两个或更多规则应用在同一元素上,此时, 选择器相同,则执行层叠性 选择器不同,就会出现优先级的问题。 1)权重计算公式 a.简单记忆法: 通配符和继承权重为0 标签选择器 权重为1 类(伪类)选择器为10 id 选择器 权重为100 行内样式表 权重为 1000 !important 权重为 无穷...
css三大特性.pptx
11-25
### CSS三大特性详解 #### 一、层叠性 **定义**:层叠性是指在CSS中,当多个样式应用于同一个HTML元素时,如果这些样式中有冲突的部分,则其中一个样式会覆盖其他的样式。这一特性主要是为了处理样式之间的冲突。 ...
CSS基础学习】CSS三大特性
01-08
CSS三大特性,分别是 继承性,层叠性,优先级。CSS的主要特征是继承性,这里先讲解继承性。 继承性 继承性的使用说明 继承性的描述: 继承性是指被包在内部的标签将拥有外部标签的样式性,即子元素可以继承父类的...
CSS三大特性之层叠性、继承性和优先级
qq_52763599的博客
01-20 486
CSS三大特性之层叠性、继承性和优先级
CSS三大特性
我爱美女S的博客
10-17 4564
CSS三大特性:层叠性,继承性,优先级。 样式层叠的原则是样式冲突,{就近原则},后定义,后生效 子元素会继承(inherit)父元素的某些样式: 1 文本颜色、text-align具有继承性,text-indent 属性可以继承、line-height属性可以继承,其默认值是normal,规定应该从父元素继承 line-height 属性的值。 2 字体属性,所有的font属性都具有继承性, font-style font-variant font-weight font-size/line-height
使用CSS三大特性有那些?
乐逍遥
08-16 290
CSS三大特性 层叠性 对同一个选择器选择相同样式不同的参数: 遵循就近原则,谁离标签近就执行哪个样式 (后来者居上),但是不冲突的部分不会被覆盖 继承性 子标签会继承父标签的某些样式(可以继承的样式text- ,font- ,line- ,color- ) 在F12中可以看到inherited from xxx 行高的继承 body { font: 12px/1.5 "Microsoft YaHei"; /* 字体大小/行高 字体 */ } 行高可以没有单位 没有单位的意思是当
CSS三大特性
qq_46178261的博客
03-15 559
CSS三大特性 1.层叠性 层叠性主要解决样式冲突的问题 层叠性原则: 样式冲突,遵循就近原则,哪个样式离结构近就执行哪个样式(后写的会覆盖前面的) 样式不冲突,不会层叠 div { color: red; font-size: 12px; } div { color: pink; } /*color属性值层叠为pink,font-size不会层叠*/ 2.继承性 子标...
CSS三大特性总结
IT晓可程序员之路
06-03 1217
层叠性、继承性、优先级
css三大特性
qq_40477864的博客
07-21 1274
一、继承性 所谓继承性,就是指被包含的元素将拥有外层元素的样式效果。继承性最典型的应用就是在默认样式的预设上。 我们来看一段的代码: &lt;!DOCTYPE html&gt; &lt;html lang="en" dir="ltr"&gt; &lt;head&gt; &lt;meta charset="utf-8"&gt; &lt;title&am
010——CSS三大特性(重点)
sunshine_0880的博客
07-27 898
一、层叠性 我理解中的层叠式覆盖的意思。如果有相同的两个样式,只能选择一个,则遵循就近原则。 ① 样式冲突: 遵循就近原则。 实例: &lt;div&gt;路飞&lt;/div&gt; div { color: red; } div { color: pink; } 效果: ② 样式不冲突: 不会发生层叠。 实例: div { color: red; font-...
FastReport 模版打印如何实现
最新发布
09-20
FastReport 模版打印如何实现
CSS三大特性与盒子模型解析
"CSS三大特性包括层叠性、继承性和优先级,以及盒子模型的相关知识。" 在CSS中,有三个关键特性对于理解和控制样式至关重要: 1. **层叠性**(Cascading): 层叠性是CSS解决样式冲突的方式。如果相同的选择器...
写文章

热门文章

  • 如何解决 Git 仓库嵌套问题 6774
  • 究竟什么是位图? 6166
  • 如何优化高德地图(AMap)Marker 动画 3931
  • 移动端touchend事件不触发解决方案 2896
  • HTML5 之音频合成(Speech Synthesis) 2505

最新评论

  • 究竟什么是位图?

    嗨森Note: 这句话是16进制吧 "而且每个像素值就是用十六位 00-ff 表示"

  • HTML5 之摄像头调用(User Media API)

    redoriental.top: 请问如何将流中的视频和音频取出,我想直接传输到后端

  • 在 React 中接入 Google Map

    zhao_liang4113: Demo演示也不能访问地图了表情包

  • 重写 Audio 样式

    Jartto: 这么简单的概念还需要理解?继续去百度好了

  • 重写 Audio 样式

    qq_29443133: 说了一堆废话,百度一下就有的粘下来,也没加自己的理解

大家在看

  • CTF入门教程(非常详细)从零基础入门到竞赛,看这一篇就够了! 272
  • 从零开始学前端之HTML(二)
  • 力扣中等 153.寻找旋转排序数组中的最小值
  • 某准网爬虫逆向 291
  • SSM本科生外出请假管理信息系统285zr 智能预警提醒

最新文章

  • WebP 方案分析与实践
  • Web「性能测试」知多少?
  • 聚焦 Web 性能指标 TTI
2020年9篇
2019年16篇
2018年57篇
2017年34篇
2016年37篇
2015年26篇
2014年18篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家泉州玻璃钢雕塑模具制作视频清苑玻璃钢花盆花器玻璃钢雕塑头像女高级楚雄玻璃钢气球雕塑胜大玻璃钢雕塑无锡商场美陈公司河南公园玻璃钢雕塑多少钱北京商场创意商业美陈风格清远公园玻璃钢卡通雕塑绥化玻璃钢雕塑定做玻璃钢丹顶鹤雕塑连云港玻璃钢商场美陈黑龙江步行街玻璃钢雕塑市场吉林园林玻璃钢雕塑定做梅州商场美陈雕塑厂家卡通雕塑大象玻璃钢雕塑重庆步行街玻璃钢雕塑批发贵州特色玻璃钢雕塑价位青海省玻璃钢雕塑哪里好金华玻璃钢雕塑凳子凯里玻璃钢雕塑设计公司随州大型玻璃钢动物雕塑鼓楼区动物玻璃钢雕塑金州玻璃钢雕塑厂家玻璃钢雕塑出售玻璃钢人物雕塑的用途范围玻璃钢环保雕塑商场艺术字美陈福建通道商场美陈批发户外玻璃钢雕塑上色香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化