解读CSS样式优先级(修改门户自定义样式必读)

一、什么是CSS优先级?
所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序。当同一个元素(或内容)被多个CSS选择符选中时,就要按照优先权取舍不同的CSS规则。

二、为什么要研究CSS优先级?CSS优先级与门户系统有什么关系?

究CSS优先级的主要目的就是解决多个CSS选择符选中同一个元素时的冲突问题。在门户系统中,为了保证所有的页面能正常展示,几乎所有的微件及页面都有
基础CSS样式,但是门户系统是开放的、个性化的平台,大部分样式都给予了用户修改权,这时自定义样式和门户基本样式就有可能产生冲突,合理使用CSS优
先级可以完美的解决这些冲突。

三、CSS优先级规则

◎ 每个ID选择符(#someid),加 0,1,0,0。   
◎ 每个class选择符(.someclass)、每个属性选择符(形如[attr=”"]等)、每个伪类(形如:hover等)加0,0,1,0   
◎ 每个元素或伪元素(:firstchild)等,加0,0,0,1   
◎ 其他选择符包括全局选择符*,加0,0,0,0。相当于没加,不过这也是一种specificity,后面会解释。   
按这些规则将数字串逐位相加,就得到最终计算得的specificity,然后在比较取舍时按照从左到右的顺序逐位比较。 

这样的说明或许过于复杂,具体示例如下,当两种选择符选中同一个元素时,优先级规则如下:

h1 {color: red;}  
/* 只有一个普通元素加成,结果是 0,0,0,1 */ 
body h1 {color: green;}  
/* 两个普通元素加成,结果是 0,0,0,2 */ 
——后者胜出  
      
h2.grape {color: purple;}  
/* 一个普通元素、一个class选择符加成,结果是 0,0,1,1*/ 
h2 {color: silver;}  
/*一个普通元素,结果是 0,0,0,1 */ 
——前者胜出  
      
html > body table tr[id=”totals”] td ul > li {color: maroon;}  
/* 7个普通元素、一个属性选择符、两个其他选择符,结果是0,0,1,7 */ 
li#answer {color: navy;}  
/* 一个ID选择符,一个普通选择符,结果是0,1,0,1 */ 
——后者胜出

从这里可以总结一个整体的规则即 id>class>普通元素 , 同类选择符条件下层级越多的优先级越高。

除了上面的specificity还有一些其他规则

◎ 文内的样式优先级为1,0,0,0,所以始终高于外部定义。这里文内样式指形如<div style=”color: red”>blah</div>的样式,而外部定义指经由<link>或<style>标签定义的规则。   
◎ 有!important声明的规则高于一切。   
◎ 如果!important声明冲突,则比较优先权。   
◎ 如果优先权一样,则按照在源码中出现的顺序决定,后来者居上。   
◎ 由继承而得到的样式没有specificity的计算,它低于一切其他规则(比如全局选择符*定义的规则)。   
◎ 关于经由@import载入的外部样式,由于@import必须出现在所有其他规则定义之前(如不是,则浏览器应该忽略之),所以按照后来居上原则,一般优先权冲突时是占下风的。  
这里需要提一下IE,IE是可以识别位置错误的@import的,但无论@import在什么地方,它都认为是位于所有其他规则定义之前的,这可能会引发一些误会。  


一部分规则为我们提供了解决CSS优先级最万能的方法: !important
,遇到无法解决的CSS优先级问题请考虑使用!important。另外请注意IE6的BUG,在使用!important的时候需要
把!important写在此行CSS规则的末尾,否则将无法生效,如:
.zhongsou {font-size:18px !important; font-size:12px;} IE6下!important将被忽略,字号为12px;其他浏览器显示字号为18px。
.zhongsou {font-size:12px; font-size:18px !important;} 所有浏览器显示字号为18px。

转载css层级优先级。的更多相关文章

  1. CSS选择器优先级总结

    CSS三大特性-- 继承. 优先级和层叠. 继承:即子类元素继承父类的样式; 优先级:是指不同类别样式的权重比较; 层叠:是说当数量相同时,通过层叠(后者覆盖前者)的样式. css选择符分类 首先来看 ...

  2. 【IE6的疯狂之十一】CSS的优先级及!important在IE6下的BUG

    一 css的优先级 今天有人跟我说css hack中用!important来区分ie6,因为ie6不支持!important,是的在很早以前我也是用过这种方法写hack,但是后来就基本不用了.本来我对 ...

  3. css样式权重优先级,css样式优先级

    原文:http://www.bkjia.com/Javascri... 样式选择器权重优先级: important > 内嵌样式 > ID > 类 > 标签 | 伪类 | 属性 ...

  4. CSS 样式优先级

    首先,选择器优先级顺序 优先级逐级增加的选择器列表: 通用选择器(*) 元素(类型)选择器 类选择器 属性选择器 伪类 ID 选择器 内联样式 !important 规则例外,该样式声明会覆盖CSS中 ...

  5. CSS样式优先级

    关于CSS样式优先级 一般情况下: [1位重要标志位] > [4位特殊性标志] > 声明先后顺序 !important > [ id > class > tag ] 使用 ...

  6. 关于CSS的优先级,CSS优先级计算

    原则一: 继承不如指定原则二: #id > .class > 标签选择符原则三:越具体越强大原则四:标签#id >#id ; 标签.class > .class CSS优先级权 ...

  7. CSS的优先级规则

    CSS的优先级规则有两类 1.位置群组规则 最高优先级为元素内嵌的style样式,如<div style=” “></div> 次高优先级为html头部中的<style& ...

  8. 关于Css选择器优先级

    今天练习css的时候,重叠后的style发现不起作用,原来css选择器优先级大有文章. 声明: yi下内容选自 51cto.com  --加以自己的理解 以备日后参照使用,毕竟自己理解的才是自己的. ...

  9. css的优先级以及!important的使用

    CSS的优先级应该是作为CSS基本知识而广为知道的,所以CSS入门后,就一直把CSS的优先级记挂在心里(自觉告诉自己这地方很可能会摔跤).起初可能是因为自己的项目经验不够丰富,或者是自己所接触到的项目 ...

随机推荐

  1. NoSQL系列:选择合适的数据库

    NoSQL系列:选择合适的数据库 为什么使用NoSQL数据库? 阻抗失衡 关系模型和内存中的数据结构不匹配 采用更为方便的数据交互方式提升开发效率 待处理的数据量很大 数据量超过关系型数据库的承载能力 ...

  2. cdoj 851 方老师与素数 bfs

    方老师与素数 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit St ...

  3. git学习笔记01-git最基本的工作原理分布式

    git学习的网站 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000  --廖雪峰老师 ...

  4. JSON的操作

    今天遇到了一个要解析JSON的需求.在http://stackoverflow.com/questions/1826727/how-do-i-parse-json-with-ruby-on-rails ...

  5. 如何写好CSS?(OOCSS\DRY\SMACSS)

    我现在面对的CSS基本上就是一个三头六臂的怪物,一点不夸张,因为真的是三头六臂,同一个样式在同一个element上作用了好几遍,而同一个样式又分散在4,5个class上,优先级有很多层.可以看得出这个 ...

  6. adb_常用命令

    1. adb push  电脑中的文件(包含路径)  Android中的绝对路径 2. adb pull  Android中的绝对路径文件  电脑中的绝对路径 3. adb install ??.ap ...

  7. 文件MD5校验

    1. 以前记得是在 msdn.itellyou.cn 上下载的 MD5 校验工具,应该是 IHasher,但是现在 msdn.itellyou.cn 上搜不到这个工具了... 2.

  8. Longest Common Prefix

    Description: Write a function to find the longest common prefix string amongst an array of strings.( ...

  9. 转:switch内部的变量定义问题(goto类似)

    自我总结:(之前查过goto和switch的资料但是一直没有搞懂,直到今天看到这个讨论才懂了) 1   int a;    是个描述,而不是个命令,只是说明我需要空间,编译器会保证在相应的作用域之中这 ...

  10. mac中openfire启动失败的解决方式

    不知为何,几次出现这个问题了 解决方法:使用终端命令 1:sudo chmod -R 777 /usr/local/openfire/bin 2:cd /usr/local/openfire/bin ...