如何仅在用户运行Linux时才使用特定字体?

有没有办法使用JQuery或CSS检测操作系统? 使用CSS我指的是类似于

我只需要在使用Linux查看网页时使用特定字体,并且不希望将其与其他操作系统一起使用

虽然没有直接回答“检测O / S”的问题,但您可以使用font-family CSS属性实现选择字体的预期效果。

此属性允许您选择字体列表,浏览器将尝试匹配系统上可用的字体。 它从左到右阅读,并将使用第一个可用的字体:

 body { font-family: "Calibri", "Arial", "Sans Serif" } 

在这种情况下,如果“Calibri”字体不可用,系统将使用“Arial”。 如果找不到“Arial”,它将使用“Sans Serif”系列中的任何可用字体。

有了这个,您可以首先指定您的Linux特定字体,并知道没有可用字体的其他平台也将使用合适的字体显示。

检查navigator.userAgent

您通常可以通过简单的rx找到您所寻求的内容,但这样做需要对嗅探有基本的了解。 你可以在这里找到一个很好的例子。

注意:我并不是建议您使用嗅探库,只是让您熟悉需要查找的内容。

至于通过操作系统动态控制字体,我认为,除非你的问题中没有说明一些边缘情况,简单地定义字体堆栈是你最好的选择。

我喜欢结合使用jQuery和CSS来解决这个问题。 这种方法的灵感来自modernizr,它动态地将所有浏览器的function作为类添加到html元素中。

 // Detect Browser $.each(jQuery.browser, function(i, val) { $("html").addClass( i ); $("html").addClass( val ); }); // Detect Operating System $("html").addClass( navigator.platform ); 

当我查看页面并检查DOM时,运行上面代码的结果给出了这个输出。 一个问题是我在Mac上使用Chrome,但jQuery的浏览器对象认为我使用的是Safari,它也是一个webkit浏览器。

  

如果您打印javascript的navigator.useragent,您将获得包含大量此类信息的结果

 Mozilla-5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1 

msie是为IE分配的jQuery.browser标签所以如果我将浏览器作为类附加到html或body标签,我可以在我的css中做这样的事情,而不需要条件语句:

 h1 { /* my regular h1 styles */ } .msie h1 { /* IE edge case styles for h1 treatment */ } 

在jQuery中,您可以使用其出色的选择器引擎来搜索版本#和各种组合,直接针对仅适用于特定浏览器版本和操作系统组合的问题。 只需输出整个userAgent字符串html类,只需确保清除该字符串,删除/()字符。

http://api.jquery.com/jQuery.browser/

@Sky有一个很好的链接到这个http://www.quirksmode.org/js/detect.html ,它可以用来获得更准确的浏览器和操作系统信息,你可以将它们作为类附加到HTML元素。

您可以查看Rafael的浏览器选择器javascript http://rafael.adm.br/css_browser_selector/ – 您将能够以一种简单的forms定义特定于浏览器,os和brower / os组合的CSS:

(.os)(.browser) selector {...;} (例如.opera {color: red;}

它支持很多操作系统和很多浏览器