标签的 face 属性已彻底废弃,html5 完全移除,所有现代浏览器均不识别,解析器直接忽略;唯一合规方案是用 css 的 font-family 作用于 body 或 :root,并合理配置字体回退链与基础排版属性。

<basefont> 标签的 face 属性不能用于现代网页开发。它在 HTML 4.01 中已被废弃,HTML5 完全移除,且仅 IE9 及更早版本支持——当前所有主流浏览器(Chrome、Firefox、Safari、Edge)均不解析该标签。
<basefont face="..."> 为什么无效
- 浏览器根本不识别
<basefont>:HTML 解析器会直接忽略它,不触发任何样式行为 - 即使写在
中,也不会影响内任何元素的字体渲染 - 开发者工具中查不到对应样式规则,DOM 树里也看不到该节点生效(部分浏览器甚至不将其加入 DOM)
- W3C 验证器会报错:
Element “basefont” not allowed in this context
替代方案:用 CSS 设置全局字体系列
唯一可靠、跨浏览器、符合标准的做法是通过 CSS 的 font-family 属性作用于 body 或根元素:
body {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
- 这会作为默认字体继承给所有后代文本元素(
p、h1、span等),除非被更具体的规则覆盖 - 字体列表用逗号分隔,浏览器按顺序尝试:找到第一个本地可用字体即停止
- 中文场景建议包含系统默认中文字体,例如:
"Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", "sans-serif" - 不要依赖“宋体”“微软雅黑”等名称在所有设备上存在;macOS 和 Linux 通常没有“微软雅黑”,Windows 也没有“PingFang SC”
容易踩的坑
- 把
<basefont face="...">和<font face="..."></font>混为一谈:后者虽也废弃,但某些旧浏览器仍能解析(仅限内联使用),而<basefont>是彻底失效的全局控制标签 - 在 Vue/React 等框架中动态插入
<basefont>标签:JS 创建的节点同样不会被浏览器样式引擎处理 - 用
<style>body{font-family:...}</style>却放在底部:可能导致 FOIT/FOUT 加剧,应始终置于 - 忘记设置
line-height或font-size:只设font-family不足以保证可读性,基础排版需成套配置
<basefont> 是一个已死亡的 HTML 特性,它的存在意义只剩兼容极老内部系统或遗留文档归档。真正要控制字体,必须用 CSS,且必须理解字体回退链和系统差异——这不是可选步骤,而是必经路径。











