如何确定CSS选择器的优先级?

html-css014

如何确定CSS选择器的优先级?,第1张

CSS选择器优先级

(1)CSS选择器都有权重值,权重值越大优先级越高。

内联样式表的权重值最高,值为1000。

id选择器的权重值为100。

class选择器的权值为10。

类型(元素)选择器的优先级为1。

通配符选择器的优先级为0。

(2)当权值相等时,后定义的样式表要优于先定义的样式表。

(3)在同一组属性设置中表有“!important"规则的优先级最大。

所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序。既然样式有优先级,那么就会有一个规则来约定这个优先级,而这个“规则”就是重点。

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

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

•浏览器缺省设置

•外部样式表

•内部样式表(位于 <head>标签内部)

•内联样式(在 HTML 元素内部)

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

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

•百位数是该选择器上的id的数量的总和;

•十位数是用在该选择器上的其它属性选择器和伪类的总和。这里包括class (.example) 和属性选择器(比如 li[id=red]);

•个位数是计算元素(就像table、p、div、*等等)和伪元素(就像:first-line等);

•如果两个选择器对应的数字相等,也就是具有同样的优先级,在样式表中后面的那个起作用。

•标有"!important"的规则具有最高优先级,例如H1{color:black !importanfont-family:sans-serif},前景色被标为important,这个前景色具有很高的优先级。但是这种声明容易引起混乱,因此通常使用得较少。

选择器 数值

h1 {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取决于添加的顺序前后,而不是添加的位置前后;后添加的优先级要高。

CSS选择器又被称为CSS样式、CSS属性选择器。是由css命名及后面属性及属性值构成一个整体。

1.基础选择器

a.id选择器:通过设置元素的id属性为该元素制定ID。ID由开发者指定。每个ID在文档中必须是唯一的。在写样式表时,ID选择器是以#开头的。

HTML

CSS

执行效果:

b.class选择器:是以独立于文档元素的方式来指定样式,使用类选择器之前需要在html元素上定义类名,也就是要保证类名在html标记中存在。

HTML

CSS

执行效果:

c.元素选择器:通过note节点名称匹配元素。

HTML

CSS

2.属性选择器:

注意:最后一个选择器是E[attr|=val],由于输入|会对表格造成影响,只能用/代替。

CSS3新增了一些属性选择器,待持续更新。

3.组合选择器

示例如下:

实现效果如下:

示例如下:

从高到低依次是:

1.在属性后面使用 !important会覆盖页面内任何位置定义的元素样式

2.作为style属性写在元素标签上的内联样式

3.id选择器

4.类选择器

5.伪类选择器

6.属性选择器

7.标签选择器

8.通配符选择器

9.浏览器自定义

选择器的特殊性值表述为4个部分,用0,0,0,0表示。

参考:

1. css优先级计算规则

2. CSS选择器笔记

3. Selectors MDN

4. CSS3 选择器——基本选择器

5. CSS3 选择器——伪类选择器

6. 征服高级CSS选择器