CSS三大特性继承性、层叠性和优先级详解


Posted in HTML / CSS onJanuary 18, 2022

1.css属性的继承

CSS中有些属性是可继承的,何为属性的继承?

  • 一个元素如果没有设置某些属性的值,就会跟随(继承)父元素的属性值。当然,一个元素如果有设置自己的属性值,就会使用自己的。
  • 比如color、font-size等属性是可以继承的,怎样查看某些属性是继承父元素的,还是自己设置的呢?(可通过浏览器调试工具查看)

示例代码如下:给父级div设置字体样式;

.box {
  color: red;
  font-size: 16px;
}
<div class="box">
  <span>我是span元素</span>
</div>

浏览器运行结果:span元素内容字体颜色变成红色、大小变成16px,并且标识样式是继承于div.box

CSS三大特性继承性、层叠性和优先级详解

  • 那么哪些样式可以继承哪些样式不能继承,具体属性是否能继承,可以查阅W3C官网或者MDN

以MDN为例:输入需要查找的属性(color是可以继承的、width是不能继承的)

CSS三大特性继承性、层叠性和优先级详解

CSS三大特性继承性、层叠性和优先级详解

  • 不能继承的属性可以使用inherit属性值强制继承。

注意:css属性继承的是计算值,并不是编写属性时的指定值(也就是字面值)。

示例代码:

.box1 {
  width: 1000px;
  height: 150px;
  background-color: #f00;
}
.box2 {
  width: 50%; /* 500px */
  height: 100px;
  background-color: #00f;
}
.box3 {
  width: inherit; /* 500px */
  height: 50px;
  background-color: #0f0;
}

<div class="box1">
  <div class="box2">
    <div class="box3"></div>
  </div>
</div>

运行结果:div.box3是直接继承div.box2计算后的500px

CSS三大特性继承性、层叠性和优先级详解

2.css属性的层叠

CSS全称 (Cascading Style Sheets,层叠样式表),它允许多个相同名字的css属性层叠在同一个元素上,层叠最后结果,只有一个css属性会生效。

  • 浏览器的调试工具非常清晰的显示哪个css属性最终生效。

示例代码:

#box { color: red; }
.container { color: green; }
div { color: blue; }

<div id="box" class="container">div元素内容</div>

浏览器运行结果:最终id设置的属性生效;

CSS三大特性继承性、层叠性和优先级详解

  • 具体哪个css属性生效,涉及到css属性所处环境的优先级的高低。

3.css属性的优先级

为什么有时编写的css属性没有产生对应效果,很可能是因为以下原因:

  • 选择器的优先级太低;
  • 选择器没有选中对应的元素;
  • css属性使用不正确;
    • 元素不支持该css属性,比如span默认不支持width和height;
    • 浏览器版本不兼容;
    • 被同类css属性覆盖,比如font覆盖font-size;

(1)解决方案:可以充分利用浏览器的调试工具进行调试和查错,也可借助css选择器的权重值来解决。

(2)为了方便css属性的优先级,可以给css属性所处的环境定义一个权值(权重)

  • !important:10000;
  • 内联样式:1000;
  • id选择器:100;
  • 类选择器、属性选择器、伪类:10;
  • 元素选择器、伪元素:1;
  • 通配符:0;

(3)比较优先级的严谨方法:

  • 从权值最大的开始比较每一种权值的数量多少,数量多的则优先级高;
  • 如果数量相同,比较下一个较小的权值,以此类推;
  • 如果所有权值比较完毕后都发现数量相同,就采取“就近原则”;

(4)也可使用下面的表格来衡量优先级高低,使用一个四位的字串表示,值从左到右,左面的最大,一级大于一级,数位之间没有进制,级别之间不可超越:

选择器 选择器权重
继承、* 0, 0, 0, 0
元素选择器 0, 0, 0, 1
类选择器、伪类选择器 0, 0, 1, 0
id选择器 0, 1, 0, 0
内联样式 1, 0, 0, 0
!important ∞(无穷大)

到此这篇关于CSS三大特性继承性、层叠性和优先级详解的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

 
HTML / CSS 相关文章推荐
CSS3 滤镜 webkit-filter详细介绍及使用方法
Dec 27 HTML / CSS
CSS3支持IE6, 7, and 8的边框border属性
Dec 28 HTML / CSS
一款利用纯css3实现的超炫3D表单的实例教程
Dec 01 HTML / CSS
利用canvas实现图片下载功能来实现浏览器兼容问题
May 31 HTML / CSS
html5中为audio标签增加停止按钮动作实现方法
Jan 04 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(三)
Jan 21 HTML / CSS
HTML5之SVG 2D入门5—颜色的表示及定义方式
Jan 30 HTML / CSS
html5 input属性使用示例
Jun 28 HTML / CSS
详解移动端html5页面长按实现高亮全选文本内容的兼容解决方案
Dec 03 HTML / CSS
详解html5 canvas常用api总结(二)--绘图API
Dec 14 HTML / CSS
canvas 绘图时位置偏离的问题解决
Sep 16 HTML / CSS
css position fixed 左右双定位的实现代码
Apr 29 HTML / CSS
使用CSS设置滚动条样式
在CSS中使用when/else的方法
Jan 18 #HTML / CSS
CSS使用伪类控制边框长度的方法
浅谈css实现背景颜色半透明的两种方法
Dec 06 #HTML / CSS
HTML怎么设置下划线?html文字加下划线方法
Dec 06 #HTML / CSS
使用 CSS 轻松实现一些高频出现的奇形怪状按钮
DIV CSS实现网页背景半透明效果
You might like
PHP中的CMS的涵义
2007/03/11 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
2013/04/25 PHP
getimagesize获取图片尺寸实例
2014/11/15 PHP
PHP未登录自动跳转到登录页面
2016/12/21 PHP
php实现大文件断点续传下载实例代码
2019/10/01 PHP
再谈IE中Flash控件的自动激活 ObjectWrap
2007/03/09 Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
2013/06/06 Javascript
jQuery标签编辑插件Tagit使用指南
2015/04/21 Javascript
详解js中构造流程图的核心技术JsPlumb
2015/12/08 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
2017/06/22 Javascript
vue-cli开发时,关于ajax跨域的解决方法(推荐)
2018/02/03 Javascript
javascript显示动态时间的方法汇总
2018/07/06 Javascript
express express-session的使用小结
2018/12/12 Javascript
vue父组件触发事件改变子组件的值的方法实例详解
2019/05/07 Javascript
运用js实现图层拖拽的功能
2019/05/24 Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
2020/04/07 Javascript
JS实现简单贪吃蛇小游戏
2020/10/28 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
[07:38]2014DOTA2国际邀请赛 Newbee顺利挺进胜者组赛后专访
2014/07/15 DOTA
[03:20]次级联赛厮杀超职业 现超级兵对拆世纪大战
2014/10/30 DOTA
Python实现字符串格式化的方法小结
2017/02/20 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
PyQt5每天必学之布局管理
2018/04/19 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
Python中常用的8种字符串操作方法
2019/05/06 Python
python中的单引号双引号区别知识点总结
2019/06/23 Python
numpy创建单位矩阵和对角矩阵的实例
2019/11/29 Python
python在linux环境下安装skimage的示例代码
2020/10/14 Python
css3 iphone玻璃透明气泡完美实现
2013/03/20 HTML / CSS
学生就业推荐信
2013/11/13 职场文书
餐饮营销方案
2014/02/23 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
PHP基本语法
2021/03/31 PHP
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python
一文了解Java动态代理的原理及实现
2022/07/07 Java/Android