`

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优先权基于四个主要组成部分:ID选择器、类与属性选择器、元素选择器以及通配符选择器。它们分别对应于优先权计算中的四个数字,从左至右依次表示: 1. **ID选择器**(如`#someid`)的权重最高,每个ID选择器计...

    使用的CSS书写规范、顺序

    避免使用下划线`_`,因为它可能引发浏览器兼容性问题,并与JavaScript变量命名冲突。 6. **避免滥用id**:id应该是唯一的,主要用于JS操作,而非样式定义。尽量使用class,因为class可以重复使用,且CSS选择器的...

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

    总结一下,HTML、CSS和JavaScript的加载顺序问题对于提高网页性能至关重要。合理的加载顺序和资源管理策略可以大大提升用户体验。在实践中,开发者应该根据具体情况和资源的依赖关系选择合适的解决方案,以确保网页...

    CSS网站布局与美化,css

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

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

    在网页设计中,屏幕滚动与CSS动画的结合是一种常见的交互设计手法,能够为用户提供更为丰富的视觉体验。"屏幕滚动到相应位置,执行css动画"这一技术主要涉及到CSS的定位、媒体查询(Media Queries)以及CSS动画(CSS...

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

    5. **避免使用下划线**:在CSS选择器中不建议使用下划线(`_`),原因是输入时节省按键次数,以及解决浏览器兼容问题(例如,在IE6中,带下划线的选择器可能无效),同时便于与JavaScript变量名区分。 #### 三、CSS...

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

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

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

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

    css编写顺序和命名规范

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

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

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

    CSS权威指南 css彻底设计研究 HTML5和CSS3实战 HTML5与CSS3设计模式

    设计模式是解决常见问题的标准化解决方案,此书可能包含了一些常见的网页设计模式,如模块化设计、响应式框架、移动优先策略等。读者将学习如何运用这些模式来构建可扩展、可维护和适应性强的网站。 通过以上四个...

    css2.0 CHM 下载

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

    CSS CSS CSS

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

    css2.0字典

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

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

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

    CSS中选择器优先级顺序实战讲解.pdf

    本文将详细解析CSS选择器优先级的实战应用,帮助开发者理解并解决样式覆盖的问题。 首先,我们要了解CSS选择器的四种基本类型,它们的优先级顺序如下: 1. **行内样式 (inline styles)**:这是最高优先级,通过`...

    CSS的解析、检查、修复与压缩

    CSSCheckStyle是一个集成了CSS代码的解析、检查、修复与压缩的工具,它能够确保CSS代码遵循既定的编码规范,提高代码质量和压缩效率,同时方便开发者的代码维护。以下从几个方面详细介绍CSSCheckStyle所涉及的知识点...

    Reset_CSS css样式重置文件

    导致设计师在没有定义某个CSS属性时,不同的浏览器会按照自己的默认值来为没有定义的样式赋值,所以我们要先定义好一些CSS样式,来让所有浏览器都按照同样的规则解释CSS,这样就能避免发生这种问题。 目前有很多...

    《精通CSS+DIV网页样式与布局》光盘源码

     第13章 CSS与JavaScript的综合应用   13.1 JavaScript概述  13.2 JavaScript语法基础  13.3 实例一:输入时高亮显示的Excel表格   13.4 实例二:由远到近的文字   13.5 实例三:跑马灯特效   13.6...

    js 异步加载js, css文件

    当项目js(css)文件使用越来越多,js 文件的加载也成了性能上的一个问题,此资源能够在页面全部加载完成后异步加载js等资源文件,它可以顺序加载资源列表,也可以并发加载资源列表,它包含一个方法调用接口:...

Global site tag (gtag.js) - Google Analytics