2012-05-29 69 views
1

我有定义不支持字体拉伸性能(webkit的,等等)的浏览器CSS规则问题的方法...指定为浏览器的CSS规则,不支持特定的CSS属性

的问题: 我使用Helvetica Neue字体(从Twitter Bootstrap设置CSS),我在我的一些CSS规则中使用font-stretch:condensed;属性。不幸的是,我很快就发现这个属性在Webkit和其他一些浏览器中不被支持,我开始寻找一个后备规则。

找到一个解决方案here for webkit浏览器是使用后脚本字体名称font-family: "HelveticaNeue-CondensedBold","Helvetica Neue",Helvetica,Arial,sans-serif;。但它确实只有Mac解决方案。 Windows浏览器不会有这种字体,并且会回退到非拉伸字体。

所以使用浓缩字体的唯一真正的解决方案是从像myfonts.com,谷歌webfonts等网站导入字体...因为我正在寻找一个免费的解决方案,我发现一些免费的字体接近Helvetica Neue Bold浓缩。我现在想知道有没有一种方法来指定一个CSS规则,只针对不支持font-stretch属性的浏览器?

+0

嗯,你可以用JavaScript检查,如有不支持该属性加载额外的样式,但我想这不是你想要的答案吗? – primavera133

回答

1

我能想到的唯一办法,是JavaScript的功能检测:

if (document.createElement("detect").style.fontStretch === "") { 
    document.getElementsByTagName("html")[0].className += " fontstretch"; 
} 

<head>标签添加此。

这会fontstretch类添加到您的html标记,以便您可以:

  1. 设置的@ font-face规则为标准 - 这将是浏览器的回退不支持font-stretch

  2. 使用.fontstretch作为css钩子将字体族重新设置为Helvetica Neue并应用font-stretch

+0

是的,但不想这样...更新:第二个想法,这不完全是这样一个不好的解决方案。 –

+0

它可能是唯一可行的,但我同意它不完美,因为它不适用于JS关闭。 – Luca

0

我来到翻过一个有意义的解决方案时,我正在寻找别的东西,它允许你指定你的CSS文件中使用.ie9 .yourclass.chrome .yourclass等浏览器特定的CSS。它采用了可在_layout文件或masterpage文件中加载一个小的JavaScript文件..

这种联系是Here