css样式表优先级顺序,CSS样式表及优先级法则
大家好,今天来为大家分享css样式表优先级顺序的一些知识点,和CSS样式表及优先级法则的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
css优先级
所谓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!importan; font-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的优先级由高到低分为六组:
1、无条件优先的属性只需要在属性后面使用!important。它会覆盖页面内任何位置定义的元素样式。当然,IE 6不支持这个属性,于是它也成为一种hack被很多人所熟知,真正使命被人淡忘。
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{}
,这是由于前者拥有一个第三级和两个第四级的选择器而后者第三级和第四级的选择器各为一个,当然前者优先级会比较高。
如果想学习和交流更多html前端开发的技术你可以来我们这个群:先写下这三个数字:432,然后在写下中间这三个数字:664,最后写下的三个数字是:883,按照这个顺序连起来,群就会出现。还有更多的技术资料,学习课程。
CSS选择器是一个非常灵活的CSS属性,优雅的使用它会使你的页面代码不再臃肿,而且还可以作为hack的妙用方法之一。
当比较多个相同级别的CSS选择器优先级时,它们定义的位置将决定一切。下面从位置上将CSS优先级由高到低分为六级:
1、位于<head/>标签里的<style/>中所定义的CSS拥有最高级的优先权。
2、第二级的优先属性由位于<style/>标签中的@import引入样式表所定义。
3、第三级的优先属性由<link/>标签所引入的样式表定义。
4、第四级的优先属性由<link/>标签所引入的样式表内的@import导入样式表定义。
5、第五级优先的样式有用户设定。
最低级的优先权由浏览器默认。
理解了这些CSS优先级问题后,也就不必苦恼于样式定于中的此类问题了。
如何理解css样式表的层叠性和优先级
可以有三种理解方式,如下:
一:层叠性指的是样式的优先级,当产生冲突时以优先级高的为准。
开发者样式>读者样式>浏览器样式(除非使用!important标记)
id选择符>(伪)类选择符>元素选择符
权重相同时取后面定义的样式
二:
CSS层叠性是指CSS样式在针对同一元素配置同一属性时,依据层叠规则(权重)来处理冲突,选择应用权重高的CSS选择器所指定的属性,一般也被描述为权重高的覆盖权重低的,因此也称作层叠。每个CSS选择器都会有一个权重,当两个选择器同时配置同一元素的同一属性时(比如一个设置color:red,另一个color:black),就会产生冲突,而解决冲突的方案就是CSS选择器的权重,权重高的来覆盖权重低的。
三:层叠性指的是上级标签的样式会自动继承到其所有下级标签,如针对<body>设置的标签选择器所设的字体样式会自动应用到<body>下的<p>中,除非<p>重写了相关样式将其覆盖。
css样式表优先级顺序和CSS样式表及优先级法则的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!