我是否需要在CSS中包含字体系列名称的引号?

daG*_*GUY 87 css quotation-marks font-family

我记得很久以前听过,在CSS font-family属性中包含多个单词的字体名称被引用被称为"最佳实践",如下所示:

font-family: "Arial Narrow", Arial, Helvetica, sans-serif;
Run Code Online (Sandbox Code Playgroud)

对于它,我尝试删除引号"Arial Narrow",Safari和Firefox没有任何问题呈现它.

那么,这个经验法则是否有任何逻辑,或者它只是一个神话?旧版浏览器的问题是否已不再适用于当前版本?我已经这么做了很长时间以至于我从未停下来思考是否真的有必要.

Jam*_*ice 75

CSS 2.1规范告诉我们:

字体系列名称必须以字符串形式引用,或者不加引号作为一个或多个标识符的序列.这意味着每个标记开头的大多数标点字符和数字必须以不带引号的字体系列名称进行转义.

它继续说:

如果标识符序列作为字体系列名称给出,则计算值是通过将单个空格中的所有标识符连接起来而转换为字符串的名称.

为避免转义错误,建议引用包含除连字符以外的空格,数字或标点字符的字体系列名称:

所以是的,存在差异,但不太可能导致任何问题.就个人而言,我总是在它们包含空格时引用字体名称.在一些(可能是非常罕见的)案例中,绝对需要引号:

必须引用与关键字值('inherit','serif','sans-serif','monospace','fantasy'和'cursive')相同的字体系列名称,以防止与关键字混淆同名.关键字"initial"和"default"保留供将来使用,并且在用作字体名称时也必须引用.

还要注意标点符号如/或!标识符内也可能需要引用或转义.

  • `initial`和`default`也是关键字(它们保留供将来使用).请参阅CSS_中的[_Unquoted字体系列名称](http://mathiasbynens.be/notes/unquoted-font-family). (6认同)

dji*_*.co 18

根据2013年10月的CSS字体模块级别3规范," 除通用族之外的字体系列名称必须作为字符串引用,或者不作为一个或多个标识符的序列引用 ".所以你不需要将它们用引号括起来.

但是,如果您没有" 大多数标点字符,则每个标记开头的数字必须被转义 ".为了避免逃避错误,W3C实际上建议引用包含空格,数字,标点符号或关键字值('inherit','serif'等)的字体系列名称.

通用字体系列名称('serif','sans-serif','cursive','fantasy'和'monospace')不得引用,因为它们实际上是关键字.