在公司做項(xiàng)目的時(shí)候遇到一個(gè)情況麸塞。
項(xiàng)目需要做國(guó)際化,并且中英文環(huán)境下涧衙,樣式會(huì)有不同哪工。所以選擇了:lang 選擇器
按照w3c 文檔上描述,我在每個(gè)標(biāo)簽上設(shè)置了 lang 屬性 并設(shè)置了每種語(yǔ)言的樣式绍撞。如下:
//html部分
<Input lang={(navigator.language||navigator.userLanguage).substr(0,2)} />
<label lang={(navigator.language||navigator.userLanguage).substr(0,2)}><label/>
//css
Input:lang(en){
...
}
Input:lang(zh){
...
}
不過這樣寫就太傻了正勒。這種東西可以寫到立即執(zhí)行函數(shù)中,如下:
!function(a){
var x=a.document;
var y=x.documentElement;
y.lang = (navigator.language||navigator.userLanguage).substr(0,2);
}(window)
如此一來(lái)傻铣,就直接寫css 樣式的部分就好了章贞,不用在標(biāo)簽里挨個(gè)寫了。
PS:我寫的是React應(yīng)用下的方式,立即執(zhí)行函數(shù)放在index.html 文件中script標(biāo)簽里鸭限。因?yàn)槭菃雾?yè)應(yīng)用蜕径,所以只有一個(gè)根HTML文件。所以在立即執(zhí)行函數(shù)執(zhí)行好后败京,就相當(dāng)于整個(gè)文檔都加了lang屬性兜喻。
總結(jié):寫代碼,大局觀很重要赡麦。