根据浏览器语言首选项应用不同的样式

时间:2015-09-15 08:20:01

标签: css

我需要根据浏览器语言首选项加载不同的CSS。

假设语言首选项是中文,那么FontFamily样式应该是:Microsoft中文,否则FontFamily将是:Calibri。

任何猜测。

感谢。

1 个答案:

答案 0 :(得分:2)

想要使用不同的字体与"想要加载不同的CSS"不同。您可以轻松拥有一个CSS文件,其中包含不同语言的不同规则。这是一种方法:

[lang=zh-cn] { font-family: "Microsoft Yahei","微软雅黑", STXihei, "华文细黑"; }
[lang=en-us] { font-family: Calibri; }

选择哪个选项取决于它所应用元素的lang设置,或者更确切地说,取决于具有一个的最近祖先的lang属性(后一种行为特别适用)到lang属性。所以

<html lang='zh-cn'>

将中文字体应用于文档中的所有内容,其他条件相同。

服务器需要正确设置lang元素上的html属性。有很多方法可以做到这一点。例如,它可以基于用户偏好。或者,服务器可以根据Accept-Language标头填写它。或者基于地理检测。如果用户通过用户界面更改了语言设置,则客户端可以重置lang元素本身的html属性。

对于类似英语的内容,您也可以将规则写为

[lang|=en] { font-family: Calibri; }

(请注意垂直条),它会匹配en,但也会en-us等。如果您想覆盖英国英语,请为en-uk提供另一条规则。

但是,请注意,您可能不希望完全默认使用中文字体。这将导致甚至使用该字体显示罗马字符,并且通常这种字体中的罗马字符字形显着难看。您可能最终需要将字体组合到&#34;字体堆栈&#34;,通常首先使用西方字符字体,以便使用Calibri等字体渲染罗马字符,然后再回归到中文字体只有在那里找到的字形。

lang基于属性的CSS选择器的另一个常见用法是使用CSS quotes属性,根据语言选择不同类型的引号。