特性的简写法
使用简写法来定义样式简明扼要,是个不错的方法。你也可以用简写法设定某组特性中的部分特性值,但须留意其它没写到的部分会自动采用默认值。这表示之前的规则中为某单一特性定义的值可能失效。
#section { font-size: 12px; font-family: Verdana; font-weight: bold; }
.redtext { font: 14px Arial; color: red; }
<div id="section">
采用 Verdana 粗体的 12px 字样;
<span class="redtext">采用 Arial 正常字体的 14px 红字;</span>
还是采用 Verdana 粗体的 12px 字样。
</div>
前一个例子中,套用到不同元素范围的同族特性是问题所在,但就算特性都写在同一条规则里也可能出问题,因为顺序真的很重要。
#section {
font-weight: bold;
font: 12px Verdana; /* 有了这行,font-weight 又回到预设的 normal 了 */
}
使用 * 选取符
* 选取符表示任何元素皆符合,但使用上应多加小心。
body * { font-weight: normal; }
#section { font: 12px Verdana; }
.boldtext { font-weight: bold; }
.redtext { color: red; }
<div id="section">
正常、
<span class="boldtext">
<span class="redtext">正常红字、</span>
</span>
又见正常。
</div>
在此例中,选取符为 body * 的规则会套用到所有 body �内的元素,也包括 redtext,所以原先套用到 boldtext 的 font-weight: bold; 就被覆盖为 font-weight: normal; 了。
CSS 明确性
如果某元素会套用好几条规则,则相冲突的特性就要靠规则的明确性来分高下。行内样式(放在 HTML 各卷标的 style 属性中)优先权最高,其次是以 id 做选取符的规则,再其次是以 class 套用的类别,最后则是单纯以元素名称当选取符的规则。
div { color: black; }
#orange { color: orange; }
.green { color: green; }
<div id="orange" class="green" style="color: red;">是红的!</div>
如果样式规则的选取符分成好几段,计算方式就更为复杂一些。需要了解完整信息者,请参考 CSS 2.1 规格书的 6.4.3 一节 (http://www.w3.org/TR/CSS21/cascade.html#specificity)。
-moz-* 特性是什么玩意?
请见 Mozilla 扩充的 CSS (http://developer.mozilla.org/en/docs/Mozilla_CSS_Extensions)。
