`

CSS执行顺序与优先权的问题

    博客分类:
  • css
阅读更多

   最近一直在解决ext里css冲突问题,终于找到了css的加权算法,分享给大家。

   CSS执行顺序与优先权的问题其实就是一个冲突解决的问题,当同一个元素(或内容)被CSS选择符选中时,就要按照优先权取舍不同的CSS规则,这其中涉及到的问题其实很多。
  首先就是CSS规则的specificity(特殊性),CSS2.1有一套关于specificity的计算方式,用一个四位的数字串(CSS2是三位)来表示,最终specificity越高的规则越特殊,在优先级判定时也就越有优势。关于specificity的具体计算在各种情况下的数字加成有如下一般规则:
  每个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 */ ——后者胜出  
除了specificity还有一些其他规则

 

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

    如果想系统的研究一下可以去:http://www.52css.com/ 找找,资源很多。

分享到:
评论

相关推荐

    css优先权详细解说

    css优先权详细解说,兄弟只想换点积分!大家多支持!

    CSS网站布局与美化,css

    CSS网站布局与美化CSS网站布局与美化CSS网站布局与美化CSS网站布局与美化CSS网站布局与美化CSS网站布局与美化CSS网站布局与美化CSS网站布局与美化CSS网站布局与美化CSS网站布局与美化CSS网站布局与美化CSS网站布局与...

    使用的CSS书写规范、顺序

    CSS书写顺序  1.位置属性(position, top, right, z-index, display, float等)  2.大小(width, height, padding, margin)  3.文字系列(font, line-height, letter-spacing, color- text-align等)  4.背景...

    postcss-sorting:PostCSS插件,用于按顺序保留规则和规则内容

    Lint和样式表的顺序为 。 产品特点 对规则和规则内容进行排序。 对属性进行排序。 按不同选项对规则进行排序。 组属性,自定义属性,美元变量,嵌套规则,嵌套规则。 支持CSS,SCSS(使用 ),HTML(带有 ),...

    CSS的执行顺序和优先级问题示例探讨

    今天偶尔看到这么一个问题,然后便上网查了很多资料,也做了相应的实验,现在我们来简单的看一下CSS的执行顺序问题。 1、确定CSS样式的导入方式 通常情况下我们知道的CSS导入方式有如下四种: a、链入外部样式 ...

    屏幕滚动到相应位置,执行css动画

    当屏幕滚动到相应的位置之后,css animation动画再开始执行

    css编写顺序和命名规范

    资源名称:css编写顺序和命名规范资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    CSS属性编写顺序及命名规范

    前端文档描述CSS命名规则前端文档描述CSS命名规则前端文档描述CSS命名规则

    HTML+CSS网页设计与布局从入门到精通

    附录收录了网站发布与管理的知识和160个应用CSS时出现频度较高的英文单词及其中文解释。书中给出了大量详细的案例,并对案例进行分析,便于读者在理解的基础上,直接修改后使用。《HTML+CSS网页设计与布局从入门到...

    css2.0 CHM 下载

    什么是样式表: CSS 是 Cascading Style Sheet 的缩写。译作「层叠样式表单」。是用于(增强)控制网页样式并允许将样式...高优先权样式将继承低优先权样式的未重叠定义但覆盖重叠的定义。例外请参阅 !important 声明。

    CSS在不同浏览器中兼容问题

    CSS在不同浏览器中兼容问题CSS在不同浏览器中兼容问题CSS在不同浏览器中兼容问题CSS在不同浏览器中兼容问题CSS在不同浏览器中兼容问题CSS在不同浏览器中兼容问题

    详解关于html,css,js三者的加载顺序问题

    主要介绍了关于html,css,js三者的加载顺序问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    css常见问题,css常见bug

    css常见问题 chm格式 包含css bug 兼容

    CSS2.0样式表中文手册

    CSS样式表中文手册什么是样式表: CSS 是 Cascading Style Sheet 的缩写。译作「层叠样式表单」。是用于(增强)控制网页...高优先权样式将继承低优先权样式的未重叠定义但覆盖重叠的定义。例外请参阅 !important 声明。

    CSS 的加载及加载顺序简介

    今天我们旧事重提,再来谈谈css的加载,及加载顺序。 通常的css加载顺序 一般情况下,我们css样式表是放在头部,同时为了减少请求,我们通常对css进行一个合并压缩。 目前我们css一般是如下加载的: &lt;head&gt; ...

    CSS CSS CSS

    CSS CSS 资料套装 CSS CSS 资料套装 CSS CSS 资料套装 CSS CSS 资料套装 CSS CSS 资料套装 CSS CSS 资料套装 CSS CSS 资料套装

    CSS格式化工具 Visual CSS

    Visual CSS(以下简称VCS)是一款CSS(Cascading Style Sheets,层叠样式表)代码编辑器,它的最大特点即是可以实时预览CSS代码所呈现的效果。

    css2.0字典

    高优先权样式将继承低优先权样式的未重叠定义但覆盖重叠的定义。例外请参阅 !important 声明。 链入外部样式表文件 (Linking to a Style Sheet) 你可以先建立外部样式表文件(.css),然后使用HTML的link对象。示例...

    css样式加载顺序及覆盖顺序深入理解

    查找一些教材中(w3schools等),只说css的顺序是“元素上的style” &gt; “文件头上的style元素” &gt;“外部样式文件”,但对于样式文件中的多个相同样式的优先级怎样排列,没有详细说明。经过测试和继续搜索,得知...

    美工之路 网页设计视频教程CSS篇-05.继承性与优先权.rar

    美工之路系列视频是为那些想从事网页前台设计的设计师们和网页设计爱好者量身定制的,本教程包含4个部分:HTML篇,CSS篇,Javascript篇和XML篇.不仅适用于网页设计的初学者,对中级以上水平的人员也有一定参考价值,使...

Global site tag (gtag.js) - Google Analytics