CSS中能否一次性选择多语言?如何简化多语言选择器写法
缩短CSS :lang()选择器的写法
原生CSS的:lang()伪类不支持同时传入多个语言代码,所以你尝试的h5:is(:lang(fa, ur, ar...))写法无效是符合规范的。以下是两种可行的优化方案:
方案1:保留原逻辑的精简写法
如果需要维持原选择器的匹配逻辑(即匹配所有处于指定语言环境下的h5,包括父元素设置lang属性的情况),可以通过精简语法减少冗余:
h5:is(:lang(fa),:lang(ur),:lang(ar),:lang(tg),:lang(ps)){ /* Farsi, Urdu, Arabic, Tajik, Pashto */ font-family: 'Noto Nastaliq Urdu', serif; }
只需去掉每个:lang()之间的空格,就能在不改变功能的前提下缩短代码长度。
方案2:属性选择器替代(匹配范围不同)
如果你的场景仅需要匹配自身带有对应lang属性的h5元素(而非继承父元素语言环境的情况),可以使用属性选择器结合:is()实现更紧凑的写法:
h5:is([lang="fa"],[lang="ur"],[lang="ar"],[lang="tg"],[lang="ps"]){ font-family: 'Noto Nastaliq Urdu', serif; }
注意:这种写法的匹配范围和原:lang()不同——:lang()会匹配所有处于指定语言上下文的元素(比如body设置lang="fa"时,所有子h5都会被选中),而属性选择器仅匹配自身lang属性精确等于对应值的h5。
内容的提问来源于stack exchange,提问作者Jose Mir
相关产品推荐
相关产品推荐

