CSS中的两个特殊值,用于控制层叠的inherit和initial

开发 前端
在CSS中有两个特殊值可以赋给任意属性,用于控制层叠:inherit和initial。我们来看看这两个特殊值。

在CSS中有两个特殊值可以赋给任意属性,用于控制层叠:inherit和initial。我们来看看这两个特殊值。

[[336144]]

使用inherit关键字

有时,我们想用继承代替一个层叠值。这时候可以用 inherit 关键字。可以用它来覆盖另一个值,这样该元素就会继承其父元素的值。

假设我们要给网页加上一个浅灰色的页脚。在页脚上有一些链接,但我们不希望这些链接太显眼,因为页脚不是网页的重点。因此要将页脚的链接变成深灰色(如图下图)。

继承了灰色文本颜色的 “Terms of use” 链接

通常我们会给网页的所有链接加上一个字体颜色(如果不加的话,就会以用户代理样式为准)。这个颜色也会作用于页脚的“Terms of use”链接。为了让页脚的链接变成灰色,需要覆盖颜色值。将下列代码添加到你的样式表。

  1. a:link{                     /* (一下3行)全局的网页链接颜色 */ 
  2.   color: blue; 
  3. ... 
  4. .footer{ 
  5.   color: #666;      /* 页脚的文本设置位灰色 */ 
  6.   background-color: #ccc; 
  7.   padding: 15px 0; 
  8.   text-align: center; 
  9.   font-size: 14px; 
  10. .footer a{ 
  11.   color: inherit;   /* 从页脚继承文本颜色 */ 
  12.   text-decoration: underline; 

第三个规则集覆盖了蓝色的链接色,让页脚链接的层叠值为 inherit。因此,它继承了父元素的颜色。

这么做的好处是,如果页脚发生任何样式改变的话(比如修改第二个规则集,或者被别的样式覆盖),页脚链接的颜色就会跟着页脚其他内容一起改变。比如,当页脚文本变为更深的灰色时,其中的链接也会跟着改变。

还可以使用 inherit 关键字强制继承一个通常不会被继承的属性,比如边框和内边距。

使用initial关键字

有时,你需要撤销作用于某个元素的样式。这可以用 initial 关键字来实现。每一个CSS属性都有初始(默认)值。如果将 initial 值赋给某个属性,那么就会有效地将其重置为默认值,这种操作相当于硬复位了该值。下图展示了给页脚链接赋以 initial 而不是 inherit 时的效果。

默认的颜色值位黑色

上图对应的CSS代码如下

  1. .footer a{ 
  2.   color: initial; 
  3.   text-decoration: underline; 

因为在大多数浏览器中,黑色是color属性的初始值,所以 color: initial 等价于 color: black。

这么做的好处是不需要思考太多。如果想删除一个元素的边框,设置 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属性的初始值。

 

责任编辑:赵宁宁 来源: 前端全栈开发者
相关推荐

2023-07-21 08:01:13

CSSInherit​

2015-10-09 09:43:28

CSS CSS3

2021-07-22 23:27:45

Python工具算法

2010-09-06 14:11:32

CSS

2010-08-06 14:52:35

FlexCSS层叠样式表

2021-11-17 08:43:17

LeetCode有序数组算法

2010-08-19 11:22:19

marginpadding

2020-04-17 10:13:51

Python开发工具

2019-08-28 10:00:34

Python测试工具命令

2011-05-18 14:29:49

XML层叠样式

2010-09-01 09:29:51

CSS层叠CSS继承

2009-11-03 17:24:01

VB.NET特殊形状窗

2011-04-19 16:06:57

typedef

2010-04-06 18:04:09

Oracle数据库

2009-06-30 09:37:02

对象比较Java

2011-08-29 18:17:58

Ubuntu

2022-10-17 16:17:24

机器学习算法标签传播

2023-08-07 15:49:59

CSS颜色插值算法

2009-09-16 11:08:39

PHP正则表达式特殊字

2010-03-29 17:43:32

点赞
收藏

51CTO技术栈公众号