层叠样式
我们把 HTML 的样式化系统称为 CSS,即层叠样式表(Cascading Style Sheets)。样式表是一系列规则,指出如何为文档中元素添加样式。可以在<style>
标签中写入 CSS。
<style>
strong {
font-style: italic;
color: gray;
}
</style>
<p>Now <strong>strong text</strong> is italic and gray.</p>
所谓层叠指的是将多条规则组合起来产生元素的最终样式。在示例中,<strong>
标签的默认样式font-weight:bold
,会被<style>
标签中的规则覆盖,并为<strong>
标签样式添加font-style
和color
属性。
当多条规则重复定义同一属性时,最近的规则会拥有最高的优先级。因此如果<style>
标签中的规则包含font-weight:normal
,违背了默认的font-weight
规则,那么文本将会显示为普通样式,而非粗体。属性style
中的样式会直接作用于节点,而且往往拥有最高优先级。
我们可以在 CSS 规则中使用标签名来定位标签。规则.abc
指的是所有class
属性中包含abc
的元素。规则#xyz
作用于id
属性为xyz
(应当在文档中唯一存在)的元素。
.subtle {
color: gray;
font-size: 80%;
}
#header {
background: blue;
color: white;
}
/* p elements with id main and with classes a and b */
p#main.a.b {
margin-bottom: 20px;
}
优先级规则偏向于最近定义的规则,仅在规则特殊性相同时适用。规则的特殊性用于衡量该规则描述匹配元素时的准确性。特殊性取决于规则中的元素数量和类型(tag
、class
或id
)。例如,目标规则p.a
比目标规则p
或.a
更具体,因此有更高优先级。
p>a
这种写法将样式作用于<p>
标签的直系子节点。类似的,p a
应用于所有的<p>
标签中的<a>
标签,无论是否是直系子节点。