我花了大约30分钟调试字体加载 https://stackoverflow.com/q/20900218/1420197页面出现问题,我终于发现我使用了错误的注释:
// this is a comment
@font-face {
/* is this ignored? */
...
}
.box {
border: ... /* this was not ignored */
}
改变后//
in /* ... */
字体已正确加载。
所以,我的问题是:如何解释无效的 CSS 行?它们只是被忽略还是其他 CSS 属性受到影响?
上面的例子只是一个例子。问题是关于一般无效行。
欢迎提供好的官方参考。
事情是关于/
是它不会出现在 CSS2.1 语法中注释分隔符或字符串之外的任何位置,所以如果您正在查看grammar http://www.w3.org/TR/CSS21/syndata.html#tokenization,很难准确说出它如何影响样式表解析。
它可以算作格式错误的选择器,因为 CSS 的基本构建块由选择器和声明块(统称为规则集)组成,但由于/
除了字符串值之外,它不会出现在选择器语法中,而选择器则不会,所以我会犹豫是否将其视为选择器。
我想说的是,在这种具体情况下,它只是一个通用的格式错误的声明 http://www.w3.org/TR/CSS21/syndata.html#parsing-errors:
-
格式错误的陈述。用户代理必须通过读取直到语句末尾来处理解析语句时遇到的意外标记,同时遵守 ()、[]、{}、"" 和 '' 匹配对的规则,并正确处理转义。例如,格式错误的语句可能包含意外的右大括号或 at 关键字。例如,以下几行都将被忽略:
p @here {color: red} /* ruleset with unexpected at-keyword "@here" */
@foo @bar; /* at-rule with unexpected at-keyword "@bar" */
}} {{ - }} /* ruleset with unexpected right brace */
) ( {} ) p {color: red } /* ruleset with unexpected right parenthesis */
语句被定义为规则集或 at 规则,通常由一些标记组成,后跟一对大括号 ({}
) 或任何直到下一个分号 (;
)。再次注意,这里的例子都没有/
,但由于它是通用语句中的意外字符,因此预计它会导致您的整个@font-face
“规则”被忽略。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)