<dir>标签在HTML5中已被彻底删除,不能用于创建目录列表,必须用语义化、可访问的<ul>或<ol>替代;其解析失效、无DOM接口支持、被浏览器当作未知元素处理,且与全局dir属性无关。

HTML 中的 <dir> 标签早已不是“不推荐用”,而是被 HTML5 规范彻底删除——浏览器不再保证解析,屏幕阅读器完全无视,W3C 验证器直接报错。它不能用来做目录列表,也不该出现在任何新项目中。
为什么 <dir> 无法被修复或降级使用
这不是样式问题,是解析层面的失效:
-
<dir>在 Chrome/Firefox/Edge/Safari 中均被当作HTMLUnknownElement处理,DOM 中无标准接口支持 -
document.createElement('dir')返回的是未知元素,无法触发connectedCallback或参与 Shadow DOM 生命周期 - 即使写成
<dir compact>,所有现代浏览器(Chromium 120+、Safari 17+)都静默忽略compact属性 - 旧模板里残留的
<dir>会被 Lighthouse 或 axe 工具标记为「未知元素」,且无法通过 ARIA 补救——语义链在解析阶段就断了
<ul> 替换 <dir> 的关键实操点
不能只把标签名从 <dir> 改成 <ul>,否则会丢失原有意图和可访问性:
- 原
<dir>内容若为纯文本(如<dir>html xhtml css</dir>),必须补全为<ul><li>html</li><li>xhtml</li><li>css</li></ul>,否则语义断裂、SEO 和屏幕阅读器播报失效 -
<ul>默认带圆点,而旧<dir>多数无符号,需显式重置:ul { list-style: none; }或list-style-type: none; - 若原
<dir compact>意图是压缩行高,CSS 应用line-height: 1.2或margin-block-start: 0.2em,而非依赖已无效的属性 - 嵌套目录必须用嵌套
<ul>或<ol>,不能靠缩进模拟层级——否则 ARIA 层级与视觉不一致,屏幕阅读器无法识别结构
dir 属性和 <dir> 标签完全无关
这是最常混淆的点,名字相同但规范路径、作用域、生命周期毫无交集:
立即学习“前端免费学习笔记(深入)”;
-
dir是全局 HTML 属性(如<p dir="rtl">),用于控制文本方向,至今有效且关键 -
<dir>是一个已被移除的标签,二者在 HTML5 中既无继承关系,也无替代关系 - 错误写法:
<dir dir="rtl">项目</dir>—— 外层<dir>不被识别,dir属性也因父元素非法而失效 - 正确写法:
<ul dir="rtl"><li>项目</li></ul>——dir属性作用于标准元素,行为可靠
真正容易被忽略的,从来不是怎么让 <dir> 继续工作,而是确保 dir 属性用得准确——尤其在多语言混合、表单输入、动态插入文本等场景下,它的缺失或误用比废弃标签更容易引发真实 bug。



















