1.3 特殊值
有两个特殊值可以赋给任意属性,用于控制层叠:inherit和initial。我们来看看这两个特殊值。
1.3.1 使用inherit关键字
有时,我们想用继承代替一个层叠值。这时候可以用inherit关键字。可以用它来覆盖另一个值,这样该元素就会继承其父元素的值。
假设我们要给网页加上一个浅灰色的页脚。在页脚上有一些链接,但我们不希望这些链接太显眼,因为页脚不是网页的重点。因此要将页脚的链接变成深灰色(如图1-10所示)。
图1-10 继承了灰色文本颜色的“Terms of use”链接
将代码清单1-14加入到网页底部。通常在页头和页脚之间会有更多内容,我们为了演示省略了这些内容。
代码清单1-14 带链接的页脚
通常我们会给网页的所有链接加上一个字体颜色(如果不加的话,就会以用户代理样式为准)。这个颜色也会作用于页脚的“Terms of use”链接。为了让页脚的链接变成灰色,需要覆盖颜色值。将代码清单1-15添加到你的样式表。
代码清单1-15 inherit值
第三个规则集覆盖了蓝色的链接色,让页脚链接的层叠值为inherit。因此,它继承了父元素<footer>的颜色。
这么做的好处是,如果页脚发生任何样式改变的话(比如修改第二个规则集,或者被别的样式覆盖),页脚链接的颜色就会跟着页脚其他内容一起改变。比如,当页脚文本变为更深的灰色时,其中的链接也会跟着改变。
还可以使用inherit关键字强制继承一个通常不会被继承的属性,比如边框和内边距。通常在实践中很少这么做,但是第3章介绍盒模型时,你会看到一个实际用例。
1.3.2 使用initial关键字
有时,你需要撤销作用于某个元素的样式。这可以用initial关键字来实现。每一个CSS属性都有初始(默认)值。如果将initial值赋给某个属性,那么就会有效地将其重置为默认值,这种操作相当于硬复位了该值。图1-11展示了给页脚链接赋以initial而不是inherit时的效果。
图1-11 默认的颜色值为黑色
图1-11对应的CSS如代码清单1-16所示。因为在大多数浏览器中,黑色是color属性的初始值,所以color: initial等价于color: black。
代码清单1-16 initial值
这么做的好处是不需要思考太多。如果想删除一个元素的边框,设置border: initial即可。如果想让一个元素恢复到默认宽度,设置width: initial即可。
你可能已经习惯了使用auto来实现这种重置效果。实际上,用width: auto是一样的,因为width的默认值就是auto。
但是要注意,auto不是所有属性的默认值,对很多属性来说甚至不是合法的值。比如border-width: auto和padding: auto是非法的,因此不会生效。可以花点时间研究一下这些属性的初始值,不过使用initial更简单。
说明 声明display: initial等价于display: inline。不管应用于哪种类型的元素,它都不会等于display: block。这是因为initial重置为属性的初始值,而不是元素的初始值。inline才是display属性的初始值。