我需要根据浏览器语言首选项加载不同的CSS。
假设语言首选项是中文,那么FontFamily样式应该是:Microsoft中文,否则FontFamily将是:Calibri。
任何猜测。
感谢。
答案 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
属性,根据语言选择不同类型的引号。