使用font的目的是什么:inherit?

Sou*_*uth 39 css

我只是想知道为什么font: inherit;在层叠样式表中使用.

Kon*_*lph 34

就像其他答案所说的那样,它是从父元素继承CSS属性.

其他答案没有说明为什么你需要这个.毕竟,无论如何,CSS属性都是​​继承的,对吧?

好吧,不.默认情况下,大多数是(但链接颜色不是从父元素继承的).但请考虑这种情况:

p { color: blue; }

div.important { color: red; }
Run Code Online (Sandbox Code Playgroud)
<div class="important">
    <p>This is a text</p>
</div>
Run Code Online (Sandbox Code Playgroud)

现在文本将是蓝色,而不是红色.如果我们希望<p>拥有其父级样式而不是其默认样式,我们必须覆盖其CSS.我们当然可以重复属性值(red)但违反DRY(不要重复自己).相反,我们继承它:

div.important p { color: inherit; }
Run Code Online (Sandbox Code Playgroud)

  • @cimmanon我声称你可以琐碎地推断这一点.我的例子使用了`color`,因为它很简单.但只需替换`font`就可以了解为什么需要它.这应该不是太明显,不是吗? (4认同)
  • @Anirudha它是*默认*继承的,正确的。但在我的示例中,我们显式覆盖了默认值:通过指定“p{color:blue}”,我们覆盖了默认行为(即“p{color:inherit}”),因此我们需要重新设置继承行为更具体的元素选择器`div.important p`。 (3认同)

Juk*_*ela 6

该声明font:inherit用于许多"CSS重置"样式表,这些样式表经常被复制到各种库和框架中.Eric Meyer 最初的重置CSSfont:inherit.没有具体的动机.据说整体原理是"减少浏览器在默认行高,边距和标题字体大小等方面的不一致性".但Meyer链接到他之前的帖子,他解释了这个想法,并说:"我想要这一切,因为我不想把风格效果视为理所当然.这有两个目的.首先,它让我认为我的文档的语义稍微有些难度.由于重置到位,我不选择,strong因为设计要求加粗.相反,我选择正确的元素,无论是strongembh3或什么,然后根据需要设置样式".

在浏览器中,有几个HTML元素在字体属性方面有默认呈现:标题,表单字段,表格标题单元格,一些短语元素等.使用CSS重置,或者特别font: inherit是指在支持该inherit值的浏览器上,所有这些元素都在复制文本字体,除非在样式表中另有指定.

因此,这是关于创作和设计的特定方法(或者,如某些人可能会说的,意识形态或宗教).它已经普及并经常应用.

  • 所以现在我们有了删除粗体的代码,然后在每次你想要强的或标题标记为粗体时将其添加回来。即使这是跨浏览器的标准默认值。目前不是迈耶实施的粉丝。尽管我有点喜欢他的意图。 (2认同)