日期:2014-03-25 浏览次数:21218 次
CSS选择器是构建CSS的基础.在为大型,复杂嵌套的(x)HTML文档进行款式定义时,很有可能会遇上针对相反元素在不同结构下的反复定义的问题,这个问题也是前端开发人员绝对头痛的问题.
在这种情况 (针对相反元素在不同结构下的反复定义) 发生的前提下,浏览器在渲染页面文件时,会按照一定规则进行优先级陈列,然后依据这个优先级权重对发生情况的元素进行处理.
而这个浏览器遵照的规则是什么呢?
让我们来看一段简单的HTML代码:
<body id="content">
<div class="box">
<p class="italic">For Testing 2</p>
<em id="em" class="wrap">For Testing 3</em>
</div>
</body>
这是段相当简单的HTML代码,但是具有相当的代表性.我们慢慢就能发现它为什么具有代表性了.
首先我们来加上一点简单的CSS声明:
p{ /* 1 */
color:pink;
}
p.italic{ /* 11 */
color:red;
}
div.box p{ /* 12 */
color:black;
}
div p{ /* 2 */
color:blue;
}
#content div p{ /* 102 */
color:orange;
}
div p.italic{ /* 12 */
color:green;
}
body div p{ /* 3 */
color:olive;
}
body div p.italic{ /* 13 */
color:gray;
}
大家来猜猜看结果中的"For Testing2"是什么颜色的呢?嗯...不浪费大家眼神了,结果是orange的,奇怪吗?有疑问吗?大家有没有留意到我在CSS中加入的注释中的数字?这是什么呢?这是CSS选择器特性权重值.
id选择器,class类选择器,HTML标签选择器,这3种选择器就是构成CSS承继的组件,浏览器在渲染它们的时候是有优先权的.而这个优先权在一定情况下是可以计算出来的.
串连这3个数字就可以得到特征值.