css权重是什么意思

  介绍

这篇文章将为大家详细讲解有关css权重是什么意思,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

css权重指的是css选择符的优先级,优先级高的css样式会覆盖优先级底的css样式,优先级越高说明权重越高,反之亦然。css权重基于设定的匹配规则,浏览器通过设定好的优先级来判断哪些属性值DOM元素最为相关,从而在该DOM上应用这些值。

本教程操作环境:windows7多系统,CSS3&, HTML5版,戴尔G3电脑。

<强> css权重是什么

css权重指的是css选择器的优先级,优先级高的css样式会覆盖优先级底的css样式,优先级越高说明权重越高,反之亦然。

css权重基于设定的匹配规则,浏览器通过设定好的优先级来判断哪些属性值DOM元素最为相关,从而在该DOM上应用这些值。

简单理解就是一个DOM的某个属性值有多个css样式设置,优先级高的那个应用。很多css设置不生效的问题,都是因为在某处定义了一个更高的优先级,从而导致该处样式不生效。

优先级的顺序如下:

重要比;内联(风格)比;ID祝辞类(类)的在标签(李…)|伪类(悬停,:聚焦…)|属性选择[attr=& # 39; & # 39;]比;伪对象(:,:之后)比;通配符(*)的在继承(继承)

那么如何确定优先级呢?

<强> css权重计算规则

计算css权重是有一定规则的,根据w3c制定的css规范,css权重计算规则如下:

),计算选择符中的id选择器的数量

一个id选择器为一个一个,一个为100

b),计算选择符中的类选择器,属性选择器以及伪类选择器的数量

一个类选择器,属性选择器以及伪类选择器为一个b,一个b为10

c),计算标签类型选择器和伪对象选择器的数量

一个标签类型选择器,伪对象选择器为一个c,一个c为1

d),忽略通配符选择器

通配符选择器忽略不计

如下面这张图就是一个css选择器权重的例子:

 css权重是什么意思

如果两个选择符的权重相同,则可依照”就进原则”来判断,最后定义的选择符会被采用。但尽量避免出现这种依靠定义的顺序决定选择符优先级的情况,因为在后续的维护中很难保证定义的顺序不会被打乱。

强优先级的基本规则

1。相同的权重:以后面出现的选择器为最后规则

假如在外部样式表中,同一个CSS规则你写了两次,那么出现在前面的选择器权重低,你的样式会选择后面的样式:

# content  h2 {填充才能:5 px;   }   # content  h2 {填充才能:10 px;   }

两个选择器的权重都是0,- 1,0,1,最后那个规则生效。

2。不同的权,重权重值高则生效

Id选择器的优先级比属性选择器高,比如下面的例子里样式表中# p123的权重明显比(Id=p123)的权重要高。

# a-02  {, background-image : url (n.gif);,}   (id=癮-02"), {, background-image : url (n.png);,}

3。就近原则

如我在样式表中对DOM定义的样式,然后我又在html也对DOM定义了B,应用B

.A {填充才能:5 px;   }
 

4。无论多少个元素组成的选择器,都没有一个类选择器优先级高。

就是上面的那个例外。

5。无视DOM树的距离

如下样式:

body  h2 {,,颜色:绿色;   }   html  h2 {,,颜色:紫色;   }

当它应用在下面的HTML时:

& lt; html> & lt; body>   & lt;才能h2> Here  is  a 标题! & lt;/h2>   & lt;/body> & lt;/html>

浏览器会将它渲染成紫色,
实际上规则1也适用于此,不过由于其DOM负极标签的不同,故单拎出来特殊化。

6。:不是伪类例外

:不否定伪类在优先级计算中不会被看作是伪类。事实上,在计算选择器数量时还是会把其中的选择器当做普通选择器进行计数。

 & lt; div 类=皁uter"比;
  & lt;才能p> orange</p>
  & lt;才能div 类=癷nner"比;
  ,,,& lt; p> lime

css权重是什么意思