css优先级高低排列

html-css011

css优先级高低排列,第1张

选择器优先级:

通常我们可以将CSS的优先级由高到低分为六组:

1、无条件优先的属性只需要在属性后面使用 !important 。它会覆盖页面内任何位置定义的元素样式。IE 6不支持这个属性;

2、第二高位的优先属性是在html中给元素标签加style。由于该方法会造成CSS的难以管理,所以不推荐使用。

3、第三级优先的属性是由一个或多个id选择器来定义的。例如 #id{margin:0} 会覆盖 .classname{margin:3px}。

4、第四级的属性由一个或多个 类选择器、属性选择器、伪类选择器定义。如 .classname{margin:3px} 会覆盖 div{margin:6px}

5、第五级由一个或多个 类型选择器定义。如 div{margin:6px} 覆盖 *{margin:10px} 。

最低一级的选择器是为一个通配选择器,用*{margin:10px}这样的类型来定义。

另外,可以用一句极为简单的话来描述CSS优先级问题:当一个CSS选择器拥有更多的高级别属性时,它的优先级就会比较高。如 #i100

*.c20 *.c10{} 的优先级就会高于 #i100 *.c10 div p span em{}

,这是由于前者拥有一个第三级和两个第四级的选择器而后者第三级和第四级的选择器各为一个,当然前者优先级会比较高。相同级别的优先级:

当比较多个相同级别的CSS选择器优先级时,它们定义的位置将决定一切。下面从位置上将CSS优先级由高到低分为六级:

1、位于<head/>标签里的<style/>中所定义的CSS拥有最高级的优先权。

2、第二级的优先属性由位于 <style/>标签中的 @import 引入样式表所定义。

3、第三级的优先属性由<link/>标签所引入的样式表定义。

4、第四级的优先属性由<link/>标签所引入的样式表内的 @import 导入样式表定义。

5、第五级优先的样式由用户设定。

最低级的优先权由浏览器默认。

1、标记选择器(如:body,div,p,ul,li)

2、id选择器(如:id="name",id="name_txt")

3、类选择器(如:id="name",id="name_txt")

4、后代选择器(如:#head.navulli从父集到子孙集的选择器)

5、子元素选择器(如:div>p,带大于号>)

6、伪类选择器(如:就是链接样式,a元素的伪类,4种不同的状态:link、visited、active、hover。)

看完了基本的css选择器类型后,我们接着来看一下css优先级的概念。

当两个规则都作用到了同一个html元素上时,如果定义的属性有冲突,那么应该用谁的值的,用到谁的值谁的优先级就高。

我们来看一下css选择器优先级的算法:

每个规则对应一个初始"四位数":0、0、0、0

若是行内选择符,则加1、0、0、0

若是ID选择符,则加0、1、0、0

若是类选择符/伪类选择符,则分别加0、0、1、0

若是元素选择符,则分别加0、0、0、1

算法:将每条规则中,选择符对应的数相加后得到的”四位数“,从左到右进行比较,大的优先级越高。

看完了上述内容,那我们就来看看css选择器优先级的具体排序。

css选择器优先级最高到最低顺序为:

1.id选择器(#myid)

2.类选择器(.myclassname)

3.标签选择器(div,h1,p)

4.子选择器(ul<li)

5.后代选择器(lia)

6.伪类选择(a:hover,li:nth-child)

最后,需要注意的是:

!important的优先级是最高的,但出现冲突时则需比较”四位数“

优先级相同时,则采用就近原则,选择最后出现的样式

继承得来的属性,其优先级最低。