应使用语义化HTML5标签(如<time>、<address>、<abbr>)替代class模拟结构,配合微数据itemscope/itemtype或RDFa,并确保交互性(如电话用)、语言属性lang及可访问性测试达标。

用语义化标签替代 class 模拟结构
很多人写“微格式”时,第一反应是加一堆 class,比如 <div class="h-card"><div class="p-name">张三</div></div>。这看似轻量,但屏幕阅读器完全无法识别其含义,搜索引擎也不索引这类 class 语义。真正可访问的微格式,必须基于原生 HTML5 元素 + 微数据(itemscope/itemtype)或 RDFa,而不是靠 class 名称自我标榜。
常见错误现象:把 <span class="p-url">https://example.com</span> 直接塞进导航栏,却不包裹在 <a> 中——它既不可点击,也无法被键盘聚焦,更不会被辅助技术当作链接处理。
- 优先使用
<address>、<time datetime="...">、<abbr title="...">等自带语义的标签,再叠加微数据属性 -
itemscope必须与有效 URI 的itemtype配对,例如http://schema.org/Person,不能只写"person" - 避免在非交互元素上硬加
tabindex="0"来“修复”可访问性——先确认它是否本该是交互元素(如链接、按钮)
为微格式内容提供可感知的替代路径
微格式本身是机器可读的,但人看不到。如果一段联系人信息只用 <span itemprop="telephone">+86 138-0013-8000</span> 标记,而没做任何视觉或听觉提示,用户根本不知道这是电话号码,也无法触发拨号行为。
使用场景:vCard 类微格式常用于名片、作者信息、页脚联系人区块。这些地方必须同时满足“人能看懂、机器能解析、键盘能操作”三重条件。
立即学习“前端免费学习笔记(深入)”;
- 电话号码必须包裹在
<a href="tel:+8613800138000">中,否则不支持点击/语音助手识别 - 邮箱地址同理,需用
<a href="mailto:...">,且itemprop="email"应放在该<a>内部 - 时间类字段如
<time itemprop="publishDate" datetime="2026-07-07">今天</time>,要确保“今天”这个文本对用户有意义;若仅显示“2026-07-07”,则无需额外翻译,但需确认 locale 是否匹配用户系统
避免微格式与 ARIA 的语义冲突
有人为了“增强可访问性”,在已带 itemprop 的 <span> 上又加 role="link" 或 aria-label,结果反而破坏了原生语义。浏览器和屏幕阅读器对原生链接、按钮、时间等元素有内置行为,强行覆盖会引发焦点丢失、朗读重复、键盘事件失效等问题。
性能 / 兼容性影响:部分旧版 NVDA 或 JAWS 对微数据支持有限,但对 <time>、<address> 等原生标签识别稳定。依赖 ARIA 强行“打补丁”,不如回归语义化基础。
- 不要给
<time>加role="datetime"—— 它本就是datetime语义 - 不要给
<a itemprop="url">加aria-label,除非链接文本本身无意义(如图标按钮),此时应优先改用aria-labelledby关联可见文本 - 若必须用
<div itemscope itemtype="http://schema.org/Organization">,请确保其内部至少有一个可聚焦、可朗读的子元素(如<h2 itemprop="name">),否则整块内容可能被跳过
验证微格式是否真正可访问
很多开发者只用 Google Rich Results Test 验证结构化数据是否被爬虫识别,却忽略真实用户能否操作。一个“合格”的微格式,必须通过三项手动测试:键盘 Tab 能进入、屏幕阅读器能准确朗读角色+值、触控设备能触发对应动作(如拨号、发邮件)。
容易踩的坑:自动生成的微格式代码常忽略 lang 属性。例如中文页面中 <span itemprop="description">联系我</span> 若未声明语言,某些屏幕阅读器会按英文发音规则朗读“lian xi wo”,造成理解障碍。
- 全站
<html>标签必须带lang="zh-CN"(或其他准确值),微格式内容继承该语言上下文 - 用 Chrome DevTools 的 Accessibility 面板检查元素的 “Computed Properties”,确认
name、role、value是否符合预期 - 禁用 CSS 后打开页面,确认所有微格式关键信息(姓名、电话、时间)仍以合理顺序、可读形式呈现
微格式不是贴标签的游戏,而是让机器和人都能无歧义地理解同一段内容。最常被忽略的点,其实是“不写微格式时,这段内容是否还能被正常访问”——如果答案是否定的,那微格式只是掩盖了基础可访问性的缺失,而非增强它。



















