Ach*_*les 1 html css fonts google-chrome
有人可以澄清为什么下面的字体样式设置在 chrome 中不起作用,但在 IE 和 FireFox 中起作用。
我的网站有同样的问题,它没有选择 CSS 字体设置(normal
提到的地方),因此我使用W3Schools 的 CSS 测试环境进行了测试,行为是相同的。
CSS 片段:
font-family: Arial, Helvetica, sans-serif normal;
font-family: Arial, Helvetica, sans-serif;
尝试在 Chrome 和 IE 中查看差异。
body {
font-family: "Times New Roman", serif;
}
p.serif {
font-family: Arial, Helvetica, sans-serif;
}
p.sansserif {
font-family: Arial, Helvetica, sans-serif normal;
}
Run Code Online (Sandbox Code Playgroud)
<h1>CSS font-family</h1>
<p class="serif">This is a paragraph, shown in Arial Without Normal.</p>
<p class="sansserif">This is a paragraph, shown in Arial With Normal</p>
Run Code Online (Sandbox Code Playgroud)
以下是问题:
normal
从所有 CSS 文件中删除还是有更好的方法来做到这一点)?font-family
声明如果您打开浏览器的检查器(Chrome 中的Ctrl+ Shift+ i),您将看到 CSS 规则
p.sansserif {
font-family: Arial, Helvetica, sans-serif normal;
}
Run Code Online (Sandbox Code Playgroud)
不适用。
根据CSS 规范,无效规则将被忽略,并且会应用任何本应应用的(向后级联),或者更准确地应用,而不是被否决。
结果是"Times New Roman"
在这种情况下 - 如“计算样式”中所见。
要设置文本的font-style
( -variant
, -weight
,-stretch
或line-height
(无论您尝试设置为normal
)),我们可以完全使用它,也可以使用font
简写.
字体CSS属性是用于设置一个速记属性
font-style
,font-variant
,font-weight
,font-size
,line-height
,和font-family
...
(有警告)。
Chrome 在逗号分隔的断言中识别出sans-serif normal
不是 a 的断言font-family
,而 IE 则不能。
如果您将规则简化为:
p.sansserif {
font-family: sans-serif normal;
}
Run Code Online (Sandbox Code Playgroud)
并在 IE 中查看结果,你会看到<p>
是"Times New Roman"
因为,虽然 IE 接受声明,但它不能对它做任何明智的事情。
更多来自规格:
...建议引用包含空格、数字或除连字符以外的标点符号的字体系列名称。
碰巧与关键字值(“
inherit
”、“serif
”、“sans-serif
”、“monospace
”、“fantasy
”和“cursive
”)相同的字体系列名称必须加引号,以防止与具有相同名称的关键字混淆。
所以建议将一个名为的字体系列sans-serif normal
引用为"sans-serif normal"
.
如果字体系列使用与关键字相同的名称,则必须引用它。
Comic Sans MS
或Times New Roman
等带或不带引号,并正确运用它们。sans-serif
它发现它与 结合的关键字normal
,但如果被引用,则将接受两者,尽管它无法应用该字体,除非它可以找到具有该名称的字体。sans-serif normal
可能不带引号的字体系列名称,这可以说是正确的,因为关键字只是假定系列名称的一部分,而不是整个名称。