不适合法律条文重点标引,因其仅表示上下文相关高亮,不传达法律效力、重要性或结构层级,易误导辅助技术与数据系统;应采用aria role与data-legal-*属性结合语义类名的方案。

HTML5 本身没有专为法律条文设计的「重点标引」语义标签,<mark></mark> 是唯一原生支持「高亮强调」的语义化元素,但它不表示法律效力、权威性或结构层级——仅表示「在当前上下文中暂态突出」,不能替代法律文本的正式标注规范。
为什么 <mark></mark> 不适合直接用于法律条文重点标引
<mark></mark> 的语义是「与用户当前操作相关而被高亮的内容」(例如搜索结果中的关键词匹配),W3C 明确说明它不传达重要性、警告或法律效力。用它标记「应当」「必须」「无效」等强制性表述,会误导辅助技术(如屏幕阅读器)和后续数据处理系统,误判为临时性视觉提示而非规范性语义。
- 浏览器默认渲染为黄色背景,但颜色不可靠:色觉障碍用户可能无法识别,打印时易丢失
- 无机器可读的语义扩展能力,无法对接法律知识图谱或合规检查工具
- 与
<strong></strong>、<em></em>混用时,语义冲突——前者表语气强调,后者表结构重点,<mark></mark>表上下文匹配
专业法律文档应优先用 ARIA + 自定义 data- 属性实现可扩展标引
真实法律系统(如北大法宝、Westlaw)均采用「语义分层+元数据绑定」策略。HTML5 允许通过 role 和 data- 属性补充法律语义,且保持向后兼容:
- 对「强制性条款」用
<span role="note" data-legal-type="obligation">当事人应当…</span> - 对「除外情形」用
<span role="complementary" data-legal-effect="exception">但有下列情形之一的除外…</span> - 所有
data-legal-*属性值需在文档头部统一声明 Schema,例如通过<script type="application/ld+json"></script>定义枚举
这样既不破坏 HTML5 结构,又能让自动化工具提取「义务主体」「适用条件」「法律后果」三元组。
立即学习“前端免费学习笔记(深入)”;
如果必须用视觉高亮,CSS 应与语义解耦
避免用 style="background:#ffeb3b" 写死样式。正确做法是定义语义类名,并用 CSS 控制表现:
.legal-obligation { background-color: #e3f2fd; border-left: 4px solid #2196f3; }
.legal-exception { background-color: #fff3cd; border-left: 4px solid #ffc107; }
关键点:
- 类名反映法律功能(
legal-obligation),而非视觉效果(highlight-yellow) - 用
border-left替代纯背景色,保障黑白打印可读性 - 必须配
@media print规则,将背景色转为文字前缀(如「【义务】」「【例外】」)
真正难的不是怎么标,而是标完之后谁来认——法律条文标注的价值取决于下游系统能否解析出「这个‘应当’约束的是哪类主体,在什么条件下触发,违反后由谁执行」。HTML5 提供的是容器,不是答案。











