发现在用Sublime Text3自动补全的HTML文件中都有一个属性lang
<html lang="zh-CN">
可以理解,这是规定页面内容的语言为中文,同样的还有英文的
<html lang="en">
但是这个除了标准化之外,还有什么作用?不注明的时候同样默认是中文,不写的影响有什么?
经过一番谷歌,先贴出W3C中的一篇文章《为什么使用语言属性?》
https://www.w3.org/International/questions/qa-lang-why
里面讲得很详细
大概就是
- 语言属性允许你根据语言调整内容样式。更多用法请看使用 lang 属性样式化
可以为不同的语言设置不同的样式,比如字距行距什么的
2.字体选择
为不同的语言选择不同的字体(事实上在一些浏览器中简体和繁体的显示效果就不一样)
3.搜索
虽然主流搜索引擎一般都使用自动语言检测来鉴定资源的语言,但页面内部的标记可以基于用户的语言偏好改进搜索结果的质量。
4.翻译
翻译工具的依据是lang属性,就像设置lang=”en”的时候chrome浏览器会显示翻译的按钮。添加lang属性有助于翻译优化
.
5.非文本阅读器
.
6.分析器与脚本
注意:
单一的 zh 和 zh-CN 都是废弃用法,不推荐使用
应该去掉 zh- 前缀并使用 cmn、wuu、yue、gan ….
在知乎中有关于这个用法的问题
网页头部的声明应该是用 lang=”zh” 还是 lang=”zh-cn”?
以下两种写法均正确,后者描述更精准,但目前浏览器和操作系统都只支持前者,使用新标准可能会造成无法匹配浏览器用户定义字体、网页翻译、程序语言自动切换等功能,前端和码农为了兼容性推荐使用前者:
zh-CN 中文 (简体, 中国大陆) 对应 cmn-Hans-CN 普通话 (简体, 中国大陆)
zh-SG 中文 (简体, 新加坡) 对应 cmn-Hans-SG 普通话 (简体, 新加坡)
zh-HK 中文 (繁体, 香港) 对应 cmn-Hant-HK 普通话 (繁体, 香港)
zh-MO 中文 (繁体, 澳门) 对应 cmn-Hant-MO 普通话 (繁体, 澳门)
zh-TW 中文 (繁体, 台湾) 对应 cmn-Hant-TW 普通话 (繁体, 台湾)