在前端圈子里,有一些标签常年被忽视,dd元素表 就是其中特别委屈的一个。大家对 div 和 span 爱得深沉,对 dd、dt、dl 却经常一脸茫然:这三个到底干嘛用?能不用就不用?
我以前也差不多,见到别人写 <dl><dt><dd> 的时候,总觉得有点“仪式感过多”,直到后来做内容型网站和知识文档时,才发现:没好好用 dd元素表,真的是在浪费 HTML 自带的语义化能力。
一、先把话说明白:什么是“dd元素表”?
所谓 dd元素表,其实就是围绕 <dl>、<dt>、<dd> 这三个标签构建的一种“描述型结构”。
<dl>:description list,描述列表,可以理解成一个“容器”<dt>:description term,被描述的“术语”或“项目名”<dd>:description detail,对这个术语的“解释说明”
把这三个拼起来,就是一个完整的 描述表结构,很多人习惯叫它 “dd元素表” 或 “描述列表表格”。虽然从严格的 HTML 定义上,它不算“表格(table)”,但在结构展示上,它确实常常用来替代传统表格。
最简单的例子:
“`html
- 用户名
- river_wang
- 注册时间
- 2024-03-01
“`
看着是不是很像一个小小的信息表?这就是 dd元素表 的基础形态:有标题、有说明,结构清晰,机器和人都能读懂。
二、为什么我越来越偏爱用 dd元素表
有一阵子,我做的页面几乎全是 div + span,从上到下,肉眼可见的“语义贫瘠”。那时候也能跑,也能上线,就是每次回头看代码,都有种“在写一堆匿名盒子”的荒诞感。
后来认真用起 dd元素表,几个变化特别明显:
1. 语义和结构一下子立起来了
当我用:
“`html
- 昵称
- 阿树
- 职业
- 前端工程师
“`
替换掉原本那堆:
“`html
“`
很直接的感受:不用看 class 名,也知道谁是“名称”,谁是“说明”。
屏幕阅读器在遇到 dd元素表 时,也能更自然地朗读:“术语……解释……术语……解释……”,而不是一口气读一堆 div,可访问性立刻升级。
2. 对 SEO 更友好(虽然不是银弹)
我不太相信“改一个标签,排名直接起飞”这种玄学,但从搜索引擎的角度,更清晰的结构,对理解内容肯定是加分的。
尤其是那种:
- 产品参数说明
- FAQ 问答
- 术语解释、词汇表
这类内容,dd元素表 可以把“问题(dt)”和“答案(dd)”的关系明确标出来。搜索引擎在解析 DOM 时,看到这种结构,比起一团 div,更容易判断哪些是核心字段、哪些是辅助说明。
3. 写页面时心里更踏实
我有个个人习惯:
如果某块内容本质上是“名-值”或“术语-解释”结构,那就优先用 dd元素表,除非有充分理由不用。
这种约定一旦形成,团队合作的时候很舒服:别人打开你的页面,一眼看见 dl/dt/dd,大概就知道这块是“描述类信息”,不用猜来猜去。
三、dd元素表 的几个典型使用场景
真正好用的东西,不在规范里,在场景里。
1. 产品信息、用户资料页
像电商的商品详情、个人中心的信息卡片,特别适合上 dd元素表。
“`html
“`
搭配 CSS:
css
.product-meta {
display: grid;
grid-template-columns: 100px 1fr;
row-gap: 6px;
}
.product-meta dt {
font-weight: 600;
color: #333;
}
.product-meta dd {
margin: 0;
color: #666;
}
瞬间就是一个干净利落的“信息表”。
2. FAQ 或 Q&A 模块
我以前做 FAQ,总习惯:
“`html
“`
直到某一天,我改用:
“`html
- 如何重置密码?
- 进入账号设置,点击“安全中心”,然后……
- 支持哪些支付方式?
- 目前支持微信支付、支付宝、VISA 等……
“`
视觉上没差多少,但在结构层面,这就是标准的“问题-回答描述列表”,用 dd元素表 会更贴切。
3. 术语表、字段说明文档
做接口文档或者后台操作说明的时候,dd元素表 几乎是天然适配。
“`html
- user_id
- 用户唯一标识,字符串类型,长度不超过 64。
- created_at
- 创建时间,ISO 8601 格式,例如 2024-03-01T12:00:00Z。
“`
做成知识库页面的时候,自动生成目录、提取字段摘要,都比纯 div 结构更省事。
四、很多人误会的点:dd元素表 ≠ 必须长得像表格
有一段时间我把 dd元素表 想得太“死板”,总觉得写了 dl/dt/dd,页面就必须变成两列网格,左标题右内容。后来发现完全没必要。
dd元素表 只规定了语义关系——dt 是“术语”,dd 是“解释”;但视觉布局可以非常随意:
dt可以在上,dd在下,像一个个问答卡片dt可以缩进,dd用不同背景色,像笔记里的重点+注释- 甚至可以让一个
dt对应多个dd,做多条补充说明
例如:
“`html
- 注意事项
- 首次使用前请完整阅读使用说明。
- 避免长时间在高温环境下存放。
“`
一个术语,多条说明。表格很难这么优雅地表达这种关系,但 dd元素表 天生支持。
五、写 dd元素表 时,我会注意的几个“小习惯”
这些不是什么规范,只是我自己踩坑之后留下的一点偏执。
1. dt 尽量短而清晰
dt 就像路牌,长得啰嗦就没人看:
- 用“手机号”,不要用“用于接收验证码以及登录用的手机号码”
- 真要解释,放到
dd里去
2. dd 可以写得像给人看的,而不是给机器看的
有时候我们为了“结构化”,会下意识把 dd 写成非常生硬的字段描述。其实完全没必要。
“`html
“`
这种写法更像你在对一个真实用户说话,页面不再冷冰冰。
3. 样式上别怕大胆一点
很多人觉得 dd元素表 一用起来,就容易把页面做得像老式后台。实际上你完全可以把它打扮得很现代:
css
.profile dl {
padding: 16px;
border-radius: 12px;
background: #f7f7fb;
}
.profile dt {
font-size: 13px;
color: #999;
margin-top: 10px;
}
.profile dd {
margin: 2px 0 0;
font-size: 15px;
color: #333;
}
你会发现,同样是信息展示,用 dd元素表 做出来的卡片,带着一点“文档感”,但通过设计,又不会显得老土。
六、什么时候我反而不会用 dd元素表
也得说句公道话:不是所有“看起来像表格”的地方,都适合用 dd元素表。
我一般会在这几种情况下放弃:
- 明确是可排序、可筛选的结构化数据,比如订单列表、商品表格,这类还是老老实实
<table>或者纯 div+ARIA 更合适。 - 布局极其复杂、完全不具备“术语-解释”关系 的区域,比如多列瀑布流卡片、图文混排专题页,用
dl/dt/dd会显得牵强。 - 团队里完全没人懂 dd元素表 的语义,也懒得学……这种时候硬用,反而会被后续维护的人骂。
但只要你心里有一条线——“有没有一个东西,是在解释另一个东西?”——如果答案是“有”,那我多半会考虑用 dd元素表。
七、从一个小标签,看整个页面的气质
我一直觉得,写前端页面有点像布置一间屋子。你可以把所有东西都塞进纸箱(div),也可以给每一类物品一个合适的位置和名字。
dd元素表 就像那种专门用来放“说明书”和“标签卡片”的抽屉。你不用它,生活也能继续;但用上它,整个空间的秩序感就会慢慢显现出来。
当你开始有意识地在页面里安放 dd元素表,去区分:
- 哪些是标题
- 哪些是解释
- 哪些是参数
你会发现自己在写的,不再只是“能跑的网页”,而是一个真正有结构、有语义、有层次的文档空间。
我挺喜欢这种感觉的,哪怕用户未必能说出差别在哪。
只是一段时间之后,你再打开自己的代码,会觉得:嗯,这个页面,是写给人和机器一起看的;而 dd元素表,在其中悄悄发挥了作用。
发表回复