千家信息网

如何理解CSS优先级

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章给大家介绍如何理解CSS优先级,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。当你将一个样式添加到元素上却发现不起作用时,那就是遇到优先级问题了。那么应该如何处理 CSS
千家信息网最后更新 2026年11月02日如何理解CSS优先级

这篇文章给大家介绍如何理解CSS优先级,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

当你将一个样式添加到元素上却发现不起作用时,那就是遇到优先级问题了。那么应该如何处理 CSS 优先级问题呢

我们可以通过使用外部样式、内部样式、内联样式等方法给元素添加指定的样式,此时的优先级是:

外部样式 < 内部样式 < 内联样式
这个应该比较容易理解,也就是说离元素距离越近的样式优先级越大。如:

代码如下:



//外部样式(color:green)

my color
//内联样式

此时显示的优先级是 red > blue > green。所以 my color 显示为红色。

特殊的计算方法

假设有下面这段代码:

代码如下:




my color



我们面对下面的 css,如何判断优先级呢?

代码如下:



这里介绍一种特殊的计算方法:

元素, 伪元素: 1 – (0,0,0,1)
类, 伪类, 属性: 1 – (0,0,1,0)
ID: 1 – (0,1,0,0)
内联样式: 1 – (1,0,0,0)
这里的属性指的是:

效果如下:

优先级从上往下依次增加,至于如何计算,同样举例说明:

p: 1个元素– (0,0,0,1)
div: 1个元素 – (0,0,0,1)
#idSelector: 1个ID – (0,1,0,0)
div#idSelector: 1个元素, 1个ID – (0,1,0,1)
div#idSelector p: 2个元素, 1个ID– (0,1,0,2)
div#idSelector p.classSelector: 2个元素, 1个类, 1个ID – (0,1,1,2)
所以现在我们再来看上面的例子:

代码如下:


div p.classSelector {color: blue} - (0,0,0,1) + (0,0,0,1) + (0,0,1,0) = (0,0,1,2)
#idselector p {color: red} - (0,1,0,0) + (0,0,0,1) = (0,1,0,1)

由于优先级上 (0,1,0,1) > (0,0,1,2),所以我们知道最后显示的颜色为红色。

继承

继承是个比较好理解的概念,即子元素会继承父元素的样式。例如:

代码如下:



my color



上例中的 span 会继承父元素 div 的样式。但不是所有的属性都会默认使用继承的方式,比如 margin 和 padding 属性。例如:

代码如下:



my color



此时,元素 p 并不会继承父元素 div 的 margin 和 padding 样式,除非你这么做:

代码如下:



my color



总结

1.首先找到所有作用在元素上的样式。(不要忽略来自继承的样式)
2.计算样式的作用距离,距离越近,优先级越大。
3.使用特殊的计算方法来判断同距离内的样式。
4.如果计算后的结果相同,那么后声明的样式覆盖先前声明的样式。
5.如果某个样式中设置 !important,则无论它的优先级如何,都以该样式为准。(除非迫不得已,强烈不建议使用这个方法,因为这无疑是不符合 css 思想的用法)

样式表允许以多种方式规定样式信息。样式可以规定在单个的 HTML 元素中,在 HTML 页的头元素中,或在一个外部的 CSS 文件中。甚至可以在同一个 HTML 文档内部引用多个外部样式表。当同一个 HTML 元素被不止一个样式定义时,会使用哪个样式呢?

一般而言,所有的样式会根据下面的规则层叠于一个新的虚拟样式表中,其中数字 4 拥有最高的优先权。

•浏览器缺省设置
•外部样式表
•内部样式表(位于 标签内部)
•内联样式(在 HTML 元素内部)

  因此,内联样式(在 HTML 元素内部)拥有最高的优先权,这意味着它将优先于以下的样式声明: 标签中的样式声明,外部样式表中的样式声明,或者浏览器中的样式声明(缺省值)。这只是一个大方面的优先级,在前面文章中我们讲过CSS有很多选择器,那么对于同种样式的CSS,各个选择器的优先级又是如何呢?

  我们将某一个CSS看成一个三位数,通过比较数字的大小来获取优先级的高低,那么就会相当简单。在这里可以通过下面的规则来定义各个选择器对应的数字。

•百位数是该选择器上的id的数量的总和;
•十位数是用在该选择器上的其它属性选择器和伪类的总和。这里包括class (.example) 和属性选择器(比如 li[id=red]);
•个位数是计算元素(就像table、p、div、*等等)和伪元素(就像:first-line等);
•如果两个选择器对应的数字相等,也就是具有同样的优先级,在样式表中后面的那个起作用。
•标有"!important"的规则具有最高优先级,例如H1{color:black !importan; font-family:sans-serif},前景色被标为important,这个前景色具有很高的优先级。但是这种声明容易引起混乱,因此通常使用得较少。
选择器 数值

h2 {color:blue;} 1
p em {color:purple;} 1 + 1 = 2
.apple {color:red;} 10
p.bright {color:yellow;} 1 + 10 = 11
p.bright em.dark {color:brown;} 1 + 10 + 1 + 10 = 22
#id316 {color:yellow} 100

一般我们还可以通过浏览器的插件来查看,到底哪个CSS起作用,比如Firebug(Firefox)、Developer Tools(IE8)等。上面我们介绍到当优先级相同时,哪个CSS起作用取决于所处的位置,通常后面的CSS优先级要高。但是对于IE浏览器,具有相同数值的动态CSS取决于添加的顺序前后,而不是添加的位置前后;后添加的优先级要高。

原则一 - 继承不如指定。
原则二 - #ID > .class > 标签选择符。
原则三 - 越具体越强大。
原则四 - 标签#id >#id ; 标签.class > .class。
原则五 - 原则一 > 原则二 > 原则三 > 原则四。

关于如何理解CSS优先级就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

样式 元素 优先级 选择 原则 代码 作用 属性 方法 标签 面的 数字 浏览器 浏览 最高 特殊 相同 位数 可以通过 规则 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司起名 云之行互联网科技 科技平台互联网 互联网下的科技发展 金融科技创新监管互联网金融 没上市的科技互联网公司 互联网科技博客 多迪互联网科技有限公司 深圳互联网科技怎么样 宁波青枫互联网科技有限公司 互联网科技中介 宝灵互联网科技有限公司 速维有品互联网信息科技(苏州)有限公司 天津腾达互联网科技有限公司 如何创新互联网科技 东莞新华互联网科技学校 互联网公司属于科技吗 互联网领先科技成果宣传视频 互联网的黑科技实验室 知域互联网科技有限公司官网 互联网金融科技 互联网科技公司发展 百单互联网科技有限公司 新浪科技互联网 华脉科技工业互联网产品 苏州五指互联网络科技有限 宜昌元轩互联网科技有限公司 南京一网一红互联网科技有限公司 互联网科技创新方面的资料 互联网科技企业文化
0