1

考虑以下 CSS:

* {  font-family: Gill Sans, Verdana, Arial, Helvetica, Sans-Serif}

p {  font-family: Courier; }

然后这个标记...

<p>Hi there. So <em>very</em> pleased to make your acquaintance.</p>

为什么<em>在 Gill Sans 中显示?或者更确切地说,为什么通配符会覆盖<p>. 我想如果每个标签都具有相同的“权重”,我想我可以在其中看到一些逻辑,但直觉上它对我来说仍然是一个“错误”......而且它往往会为我做更多的标记,因为我可以不要假设这<em>只会以特定方式影响字体样式。

简而言之,有没有办法让“修饰符”像<em>只对特定功能进行操作?

4

3 回答 3

1

*匹配每个元素,<em>包括<p>. 会从 继承字体
,但会覆盖它。<em><p>*

你几乎不应该使用*.
如果要应用全局字体,请将其设置为body,以便其他规则可以针对特定元素覆盖它并级联到它们的后代。

于 2013-06-03T18:23:03.157 回答
1

假设仅提供代码,则元素font-family上唯一的声明集是 for ,因此它适用。然后,它的父级上可能设置的内容完全无关紧要。em*font-family

“有没有办法让'修饰符'像<em>只对特定功能进行操作”这个问题没有意义,因为<em>它不是修饰符并且因为 CSS 通常对特定功能进行操作。因此,如果您在em元素上设置属性,它将应用,除非该元素有另一个设置覆盖它。在给定的示例中,没有设置冲突:仅适用一个规则。

于 2013-06-03T19:26:38.737 回答
0

我想你可以修改你的 CSS 并修复它:

p, p * {  font-family: Courier; }

或使用body选择器代替*

于 2013-06-03T18:23:22.333 回答