为什么em覆盖了字体系列的p?

时间:2013-06-03 18:20:28

标签: css font-family em

考虑以下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>。如果每个标签都具有相同的“重量”,我想我可以看到-some-逻辑,但它对我来说似乎仍然是一个“错误”...而且它往往会为我提供更多标记,因为我可以不要以为<em>会以特定的方式影响字体样式。

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

假设只显示了代码,font-family元素上唯一的em声明集就是为*设置的声明集,因此适用。然后完全无关的是font-family可能已在其父级上设置。

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

答案 2 :(得分:0)

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

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

或使用body选择器代替*