文章有些老,但很具有参考价值。编者注。
优先权问题其实就是一个冲突解决的问题,当同一个元素(或内容)被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.cxybl.com/html/wyzz/CSS/20120601/27372.html
css优先权:css 的优先权[转载]
时间: 2024-12-31 21:13:52
css优先权:css 的优先权[转载]的相关文章
CSS执行顺序与优先权的问题
核心提示:CSS执行顺序与优先权的问题其实就是一个冲突解决的问题,当同一个元素(或内容)被CSS选择符选中时,就要按照优先权取舍不同的CSS规则,这其中涉及到的问题其实很多. CSS执行顺序与优先权的问题其实就是一个冲突解决的问题,当同一个元素(或内容)被CSS选择符选中时,就要按照优先权取舍不同的CSS规则,这其中涉及到的问题其实很多. 首先就是CSS规则的specificity(特殊性),CSS2.1有一套关于specificity的计算方式,用一个四位的数字串(CSS2是三位)来表示,最终
css教程:css+div图文混排
css教程:css图文混排今天我们看看比较高级的css+div进行图文混排吧,我们先来看看下面图的效果图片. 效果还不错吧,我们看看css代码. <dl class="week1" id="no1"> <dt><a><img src="images/unknow.gif" height="100" width="133"></a><
CSS 和 CSS 预处理器简介
CSS 和 CSS 预处理器简介 我已经想了很多关于自己编写的CSS,其当前的状态和这么多年来是如何改变的. 我通常在开始做一个新项目的时候都会使用自己的框架Motherplate.它使用了Sass和Compass.大部分的类名最初都没有基于任何其他的框架.也不是故意这么做的. 现在,我认识的大多数开发人员都在使用Bootstrap.如果一个朋友要启动一个新项目,得到一些应用程序上的帮助,我通常会建议他们使用Bootstrap框架.这样做是有一定道理的,特别是他们的原型和版本都还是0的时候,使用
奇妙的 CSS shapes(CSS图形)
CSS 发展到今天已经越来越强大了.其语法的日新月异,让很多以前完成不了的事情,现在可以非常轻松的做到.今天就向大家介绍几个比较新的强大的 CSS 功能: clip-path shape-outside shape 的意思是图形,CSS shapes 也就是 CSS 图形的意思,也就是使用 CSS 生成各种图形(圆形.矩形.椭圆.多边形等几何图形). CSS3之前,我们能做的只有矩形,四四方方,条条框框. CSS3 CSS3出来后,我们有了更广阔的施展空间,通过 border-radius
使用不同的CSS写法-CSS进阶
css CSS的写法可以用以下的几种方法实现: (1)使用Embed(嵌入样式单)排版样式: 即将CSS代码直接插入每个页面的HTML的<head>区,就象上一节看到的.使用<style>...</style>标签.例如: <style type="text/css"><!--h2 { font-family: "宋体"; font-size: 12pt; font-style: itali
CSS高级技巧:CSS Sprites
上一篇CSS教程文章:CSS高级技巧:圆角矩形 网页教学网 CSS Sprites, 利用CSS background-position 进行背景绝对定位, 减少HTTP请求, 加速网页显示, 解决图片载入闪动问题的技巧. 网页教学网 CSS Sprites最适合用来做的, 恩, 比如: 清单导航的CSS鼠标翻转效果 大量小图标集中的应用 (FckEditor) ...很多很多,多的想不出来了. 实现原理简单地说就是控制容器的大小, 然后利用background-repeat, backgrou
css常用:CSS常用总结
CSS索引一.CSS样式选择器 21. 通用选择器--{font-family:"宋体"; declaration2; ... declarationN } 22. 类型选择器--p{font-family:"宋体"; } 或p1,p2{font-family:"宋体"; }逗号代表或者的意思.23. Class--p.code{font-family:"宋体"; } 24.ID--#code{font-family:&quo
div css标签:CSS+div 常用标签
最近在做网页的项目 很多东西都忘记了 我整理一下CSS+div 常用标签 希望可以帮助我和大家共同学习一下 先把整个网站构架起来才是基础,下一步才是加入jsp和Ajax.CSS中的长度 绝对单位:几乎不用在网页中 in 英寸 1in = 2.54cm cm 厘米 1cm = 0.394in pt 磅 1in = 72pt pc pica 1in = 6pc 相对单位:较常用 em 1em = 相应字体的font-size值 ex 1ex = 相
css选择器:CSS选择器基础笔记
css selectors1)[attribute] base on attributea[href] { text-decoration: none; }2)[attribute=val] base on the value of an attributea[href="www.cxybl.com"]{ text-decoration: none; }3)[attribute~=val] contain the space-separated attribute somewhere