所谓继承是指 HTML 元素可以从父元素那里继承一部分 CSS 属性,即使当前元素没有定义该属性。以下是可以被继承的属性:
字体系列属性
字体系列属性主要包括 font-size、font-family、font-variant、font-style、font-weight、font、letter-spacing、word-spacing、text-transform 和 line-height。如果没有在一个元素上设置这些属性,则其继承上层的相应属性。
文本系列属性
文本系列属性主要包括 color、direction、text-align、text-indent、text-decoration、text-shadow、white-space、word-wrap 和 hyphens。只有 color 属性可以被继承自父元素,其他都不能继承。
其他系列属性
其他系列属性主要包括 visibility、cursor、list-style 和 quotes。list-style 属性可以继承,但 quotes 属性不能被继承。
inherit(继承)值
每一个属性可以指定值为“inherit”,即:对于给定的元素,该属性和它父元素相对属性的计算值取一样的值。继承值通常只用作后备值,它可以通过显式地指定“inherit”而得到加强,例如:
p { font-size: inherit; }
继承的局限性
继承虽然减少了重复定义的麻烦,但是有些属性是不能继承的,例如 border(边框)、margin(边距)、padding(补白)和背景等。
这样的设定是有道理的,例如设定了边框,如果此属性也继承的话,那么在这个内所有的元素都会有边框,这无疑会产生一个让人眼花缭乱的结果。
同样的,影响元素位置的属性,例如 margin(边距)和 padding(补白),也不会被继承。同时,浏览器的缺省样式也在影响着继承的结果。例如:
body { font-size: 12px; }
会使 <h2> 中文字的大小采用标题 2 样式而非 12px 大小的文字。这是因为浏览器的缺省样式设定了 <h2> 的 CSS 规则。
有些老版本的浏览器可能对继承支持不太好,例如某些浏览器当遇到 <table> 的时候,就会丢失所有的继承的属性。
CSS 属性一旦继承了就不能被取消,只能重新定义样式。