June 6th, 2008
CSS样式应用优先级关系
Category: 闲言碎语, Author: fangle, Popularity: 55% [?]原创内容!转载请保留作者名字和出处。
fangle,http://www.28star.com/blog/2008/06/06/css-priority.html
CSS(Cascading Style Sheets)样式的最终选择涉及到继承层叠顺序等,就好比人类世界的mozilla和ie家族模式。
[1位重要标志位] > [4位特殊性标志] > 声明先后顺序
注:样式表比html后载入
- 重要声明(!important)
[1位重要标志位]
div{
display:none !important;
display:block;
}
虽然按照顺序应该是使用后声明的display:block;,但是因为!important的缘故,所以最后使用的却是display:none;。
好比现任家族族长。可以定下某一个孩子为继承人,其他人无法反驳,反驳就一段胖揍。 - 正常声明
[4位特殊性标志。点分四段(0.0.0.0),形式类似与ip地址]
有一些老式游览器使用3位特殊标志,也就是4位标示中的前两位合并。
样式表选择器支持类似文档数结构的层级选择,故特殊标志位随定义的选择器层级加权。
(每次给某个标志位加1,不带进位的哦)
优先级从左至右,前一段对后一段具有无可辩驳的压倒性优势。
(后一段就算无穷大也无法战胜前一段的1。)
就像贵族一样,家里有4个孩子,每个人都在成长中学习知识(有点修学分的感觉),自己的知识永远是自己的财富。
众所周知哥哥总比弟弟有一定的优势,不论地位或权利。
尤其在于次子们再优秀也无法替换长子接管家族,想篡位的时候可以只能让哥哥们消失了,嘿嘿。- 创作人员正常声明
- 内联样式[1.0.0.0]
在html文档的元素中直接插入样式的
就是在第一位标志位加1
<div style=”display:none;”></div>
在ie6中此优先级与id选择器同级
族长的第一个孩子,不论好坏,出生就被内定为家族继承人。
注:有特殊情况,ie6之前只有三位特殊标志位,内联样式[1.0.0]被合并到id选择器中[1.0.0],且因为css文档比html后载入,所以后声明的会覆盖前面声明的。
话说ie家族早年平定邪教的时候中了一个邪恶的诅咒:六子之长子。
说的是一个持续了6代的诅咒,其中每代的长子必活不过家中第二个孩子成年之日。
不过我觉得这个诅咒下的比较仓促,所以诅咒只在长子和家中第二个孩子间发生,和其他孩子没关系,所以只要舍弃第二个孩子就可以了。 - id选择器[0.1.0.0]
就是在第2位标志位加1
应用于对应id的元素,css中用“#”后跟id来标记。
#header{
display:none;
}
<div id=”header“></div>
二儿子虽不是第一继承人,当至少可以去当Identity主管(用这个世界的话说就是做做人事管理,hr),毕竟偌大一个家族的人都需要管理。 - 类(属性,伪类)选择器[0.0.1.0]
就是在第3位标志位加1- 类选择器
应用于对应class的元素,css中用“.”后跟class名来标记。
.header{
display:none;
}
<div class=”header“></div>
三儿子权利更小,分配去当家族采购主管了,肥水不流外人田吗。 - 属性选择器
属性选择器应用于对应class的元素,css中用“[]”标记中html元素属性名来标记。
div[title]{
display:none;
}
<div title=”any”></div>
地位越高,他的直系下属地位也比一般人高。
俗话说:天高皇帝远,县官不如现管。怕就怕他的狗奴才仗势欺人狐假虎威。 - 伪类选择器
LVHA伪类,样式按LVHA优先级顺序从右至左覆盖。所以要注意一下这4个伪类的声明顺序,不同的顺序会产生不同的效果。
a:link - 默认链接样式
a:visited - 已访问链接样式
a:hover - 鼠标悬停样式
a:active - 鼠标点击样式
现在终于要说道真正的祸国殃民的牛鬼蛇神了,排名前4为的金牌打手了。要对付他们先从最弱的开始,柿子捡软的捏。
- 类选择器
- 元素(伪元素)选择器[0.0.0.1]
就是在第4位标志位加1- 元素选择器
应用于所有对应的html标签,css中直接使用html元素标记
div{
display:none;
}
<div></div><div></div> - 伪元素选择器
:first-letter - 首字母样式
:first-line - 首行样式
四儿子其实被排挤的不行了,每天就干一些表面的事情,小铺开张剪个彩啦,出席一些小应酬啦,浑浑噩噩的度过一生。
- 元素选择器
- 通配符选择器[0.0.0.0]
就是在第4位标志位加0,不要小看这个0啊。
应用于所有匹配的样式,类似模糊匹配,*号就是什么都可以啦。
div *{
display:none;
}
<div><div></div><span></span></div>
这类人其实就是那些家族的旁支了,他们虽然对家族来说是渺小的,但是毕竟还有家族血缘,至少可以当当小掌柜。
看看下面那些人就知道什么叫卑微了。 - 继承样式和结合符[无]
这个连0都不是,简直就是什么都不是,不是东西啦。- 继承样式
p会继承div设置的样式,但没有权重,任何方式给p定义的样式都可以轻易覆盖继承样式
div{
color:red;
}
<div><p></p></div> - 结合符(combinator)
- 后代选择器(descendant selector/上下文选择器contextual selector)
后代结合符(descendant combinator):空格
空格前后的元素是后代关系。
这么理解它呢?
树结构的分支选择器。
……任何子孙中包含……(可一直嵌套下去,如:div p span)
div span{
display:none;
}
<div><p><span></span></p></div><span></span><div><em></em></div>
空格的左右两边不一定是子元素这样的绝对父子关系;而是父亲和子孙关系,即可以隔N代遗传。
如果有相似两代的话当然有两个选择最接近的一代。如:
两层span,只匹配最接近div的那个span。
div span{
display:none;
}
<div><p><span><h1><span></span></h1></span></p></div> - 子(元素)选择器(child selector)
子结合符:大于号(child combinator)
大于前后的元素必须是父子关系。
div > span {
display:none;
}
<div><span></span></div><div><em><span></span></em></div> - 相邻兄弟选择器(adjacentsibling selector)
相邻兄弟结合符(adjacentsibling combinator):加号
大于前后的元素必须是同级兄弟关系。
li + li{
display:none;
}
<ol><li></li><li></li><li></li></ol>
- 后代选择器(descendant selector/上下文选择器contextual selector)
这些就是要多少就可以雇佣多少的帮工了,他们没有只管工作,没有什么权利。
- 继承样式
- 内联样式[1.0.0.0]
- 读者正常声明
- 创作人员正常声明
- 用户代理(User agent)[5]声明
一般指游览器。如:
游览器对a元素有默认声明,为蓝色加下划线。
—————————
[1], [3] 名称来自《CSS权威指南》
[2], [4] 名称来自 W3C 中文版
[5] 访问web内容的软件,包括桌面图像浏览器,文字浏览器,语音浏览器,移动电话,多媒体播放器,插件程序,以及一些用来与浏览器联结的软件辅助技术,比如屏幕阅读器,屏幕放大器,语音识别软件等。
[6] W3C CSS标准英文官方网站
[7] 原创作者:fangle,
[8] 原文链接:http://www.28star.com/blog/2008/06/06/css-priority.html
Tags:cascading style sheets, css, html, style.
评论数量(
Fatal error: Call to undefined function comments_only_number() in /home/.wyatt/fangle/28star.com/blog/wp-content/themes/iblue/single.php on line 14