【发布时间】:2011-11-14 07:44:07
【问题描述】:
我正在为某人更新网站,我正在尝试摆脱全局 @font-face 并将其仅应用于特定元素。
它是这样定义的:
@font-face {
font-family: "neutra";
src: url( /styles/NeutraDisp-Bold.eot ); /* IE */
src: local("Neutra Display"), url( /styles/NeutraDisp-Bold.ttf ) format("truetype"); /* non-IE */
}
@font-face {
font-family: "futura";
src: url( /styles/FuturaStd-Heavy.eot ); /* IE */
src: local("Futura Std"), url( /styles/FuturaStd-Heavy.ttf ) format("truetype"); /* non-IE */
}
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
font-family: neutra, Arial, Helvetica, Tahoma, Geneva, sans-serif;
}
我只希望它在具有 .header 和 legends 类(以及一些其他标签,最终)的 div 上,所以我将 CSS 修改为如下所示:
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
font-family: Arial, Helvetica, Tahoma, Geneva, sans-serif;
}
@font-face {
font-family: "neutra";
src: url('../../styles/NeutraDisp-Bold.eot'); /* IE */
src: local("Neutra Display"), url('../../styles/NeutraDisp-Bold.ttf') format("truetype"); /* non-IE */
}
@font-face {
font-family: "futura";
src: url('../../styles/FuturaStd-Heavy.eot'); /* IE */
src: local("Futura Std"), url('../../styles/FuturaStd-Heavy.ttf') format("truetype"); /* non-IE */
}
legend{
font-family: neutra, Helvetica, Arial, sans-serif;
letter-spacing: .125em;
-webkit-border-radius: .5em;
-moz-border-radius: .5em;
border-radius: .5em;
}
.header{
width: 75em;
height: 12.375em;
background-color: #FFFFFF;
margin: auto;
font-family: neutra, Helvetica, Arial, Tahoma, Geneva, sans-serif;
}
但是,.header font-family 将被忽略。使用该规则中的所有其他声明,Firebug 显示 font-family,这表明它是有效的 CSS。
此外,legend 规则完美运行,并显示正确的字体。
注意:当我开始工作时,我移动了字体和其他各种东西,但我知道新的字体路径是正确的,因为 legend 规则有效。我也试过"neutra" 和'neutra'。
pastebin of the entire CSS is here,如果您认为问题出在其他地方。我还创建了a jsfiddle with a fontface included 来查看它被忽略的示例。
旧更新 jsfiddle 正在做它应该做的事情。我不知道我自己的代码有什么不同。
更新
我添加了违规规则。我想我遗漏了一些关于规则权重的东西,这就是为什么较低的规则仍然没有覆盖较高的规则。
【问题讨论】:
-
你能贴出使用 .header 的 html 吗?或者如果可能的话,在 jsfiddle.net 上设置一个小提琴?
-
您是否有可能尝试将标题元素放在不可接受的元素中...例如,我今天早些时候用这个来欺骗自己...我试图渲染
并且它不会在跨度中呈现 css,因为跨度在放入 p 标签时会变得“脾气暴躁”......这可能是标题的方式吗嵌套?
-
@Russ C:这是jsfiddle。注意托管资源。
-
字体几乎直接设置在每个元素上,
.header被嵌套div、p等规则击败。 -
@numbers1311407 你是说你必须为每个元素显式定义
font-family,即使它的父元素已经定义了?