必须删除废弃html标签并重构语义与样式:用w3c验证器或grep定位等标签,替换为语义化标签(如)和css类,避免内联样式与跨标签误删,同时检查js/css中对其引用。

<font></font>、<center></center>、<u></u>、<strike></strike>、<marquee></marquee> 这类标签必须删,不是“能显示就行”,而是它们在可访问性层面已失效:屏幕阅读器忽略语义、W3C 校验报错、构建工具(如 vscode-html-validate)直接阻断 CI 流程。
怎么快速定位所有废弃修饰标签
别靠肉眼扫。用 W3C HTML 验证器(https://validator.w3.org/nu/)上传文件,它会明确标出 Element font is obsolete 并带行号;本地批量筛查更高效,终端执行:
grep -i -o "" *.html
注意三点:
- 加
-i防<font></font>漏掉 - 不加
-r避免误扫node_modules或构建产物 - 匹配结果只输出标签名,方便你一眼确认是否真存在,而非盲目替换
删标签 ≠ 清理完成:必须同步重构语义与样式
只删 <font color="red">文本</font> 会丢样式,只留裸文本;但直接套 style="color:red" 又违反内联样式原则。正确路径是:
- 用
class="text-error"替代,再在 CSS 中统一定义.text-error { color: #d32f2f; } -
<center></center>不等于text-align: center—— 后者对块级元素无效,若要居中一个<div>,得用 <code>margin: 0 auto或display: flex -
<u></u>和<strike></strike>必须按语义换:<ins></ins>(插入)、<del></del>(删除)、<mark></mark>(高亮),读屏器会播报对应含义 - 删
<font></font>开闭标签:搜<font>]*>([^</font>,替换为空 —— 注意非贪婪 + 排除嵌套 - 删
<center></center>:搜<center>([\s\S]*?)</center>,替换为$1(保留内容),再手动加 class 或 CSS - 绝对不要用
<.></.>通配删所有标签 —— 它会吃掉<script>console.log("<div>")</script>里的引号内内容
VSCode 正则替换时最常踩的三个坑
正则不是搜索框,HTML 结构稍一松动就可能跨标签误删。安全做法是:
真正难的不是找到废弃标签,而是确认 JS 是否还在读取它的 textContent 或依赖其 DOM 位置;比如某个 <u></u> 被 document.querySelectorAll('article u') 用于统计强调次数,删了会导致埋点失效。动手前务必全局搜标签名在 JS/CSS 中的引用。











