<address>标签仅用于声明页面或文章的责任归属,不可作为联系信息列表容器;其内容须为直接联络方式且为<body>或<article>的直系子元素,禁止嵌套块级元素,换行只能用<br>。

address 标签不能用来排版“联系人地址与通讯信息”列表——它只负责声明责任归属,不是容器、不是样式工具、不支持结构化排版。
为什么用 address 做联系信息区块会出问题
很多人把 <address> 当成 <div class="contact-info"> 用,结果页面渲染正常,但语义全错:屏幕阅读器读作“联系信息区域”,可里面塞的是客服电话、发货地、营业时间——这些和“谁写了这个页面”毫无关系。搜索引擎忽略,无障碍测试报错,HTML 验证器提示“address 中嵌套了 p”。
- 浏览器(Chrome 120+、Firefox 125+)已移除
address默认斜体和外边距,视觉上和div无异,不能再靠“看起来像”来判断是否用对 -
address不接受p、div、ul、h3等块级元素,哪怕只是想“换行分隔”,也必须用<br> - 同一页面多个
address放在<body>下,只有第一个被识别为页面级联系人,其余语义失效
address 标签的合法内容怎么写
它只允许「责任人本人/团队 + 可直接联络」的短语内容(phrasing content),且必须是 <body> 或 <article> 的直接子元素。
- ✅ 合法组合:
admin@site.com、<a href="mailto:admin@site.com">admin@site.com</a>、tel:+861012345678、<a href="https://github.com/username">GitHub</a> - ✅ 物理地址仅当明确归属并具联络用途:如
来信请寄:北京市朝阳区建国路1号(前端组收),不能单写北京市朝阳区建国路1号 - ❌ 禁止出现:
<p>邮箱:a@b.com</p>、<h3>联系我们</h3>、<ul><li>电话:123</li></ul> - ⚠️ 换行只能用
<br>,例如:webmaster@site.com<br>+86 10 1234 5678<br>GitHub
该放哪儿?作用域错了等于没写
address 的语义完全由其父级决定,不是你写在哪就生效在哪。
- 在
<article>内部 → 仅代表这篇文章的作者/编辑,比如博客正文末尾的<address>作者:张三 <a href="mailto:zhang@example.com">zhang@example.com</a></address> - 在
<body>顶层(未被article包裹)→ 代表整个页面的拥有者或维护者,典型位置是页脚最底部,紧挨着版权信息之前 - 写在
<section>、<header>、<aside>或弹窗里 → 语义断裂,辅助技术可能跳过或误判为主要内容 - 嵌套在
<footer>里没问题,但<footer>本身不是语义锚点——address必须是<body>或<article>的直系子元素,不是<footer>的子元素
替代方案:真要排版联系信息列表,用什么
如果你需要展示“客服电话、门店地址、工作时间、微信二维码”这类多字段、非归属型联系信息,address 就不该出场。
- 用
<dl>+<dt>/<dd>:结构清晰,语义中性,适合字段明确的联系信息表 - 用
<div role="complementary">:当内容属于补充性联系渠道(如“关注我们”“扫码加客服”),比乱用address更合理 - 用微数据(Microdata)或 JSON-LD:对发货地、营业地址、经纬度等地理类信息,结构化数据才是标准解法
- 纯视觉排版需求?直接用
<div class="contact-list">+ CSS Grid/Flex,别硬套语义标签
最容易被忽略的一点:现代浏览器已不靠样式识别 address,你重置了 font-style 和 margin 没关系,但必须手动加视觉区分(比如左竖线、浅灰背景、缩进),否则用户根本看不出哪段是联系人——语义再准,看不见就等于没写。

















