该用 samp 标签表示程序运行后实际输出的文本,如命令行结果、日志、API 返回体中的纯文本;它与 code(源码)、pre(格式化容器)、output(表单动态值)语义不同,须搭配上下文说明来源,支持 br 换行但不可嵌套 pre,需实体化特殊字符并添加可访问性友好的样式。

什么时候该用 samp 而不是 code 或 pre
samp 专指「程序运行后实际输出的文本」,比如命令行执行结果、日志片段、API 返回体中的纯文本部分。它和 code(表示源码)、pre(保留格式的块级容器)语义不同——混用会导致可访问性工具误读,屏幕阅读器可能把输出当成可执行代码朗读。
常见误用场景:
• 把 console.log('hello') 这类代码本身包在 samp 里
• 用 samp 包含多行堆栈跟踪(应配合 pre 使用)
• 在文档中把配置项示例(如 timeout=3000)当输出处理
samp 必须搭配上下文才有效
单独一个 samp 标签没有语义价值。浏览器和辅助技术依赖其周围文字说明「这是什么的输出」。必须用自然语言明确指向来源,例如:
执行 ls -l 后,系统返回:total 8
-rw-r--r-- 1 user staff 123 Jan 1 10:00 README.md
- 不要写成
total 8孤立存在 - 如果输出含换行,
samp内可用,但不能用嵌套(HTML 规范禁止pre包含samp) - 输出中若含特殊字符(如
),必须实体化为,否则被解析为标签
样式与可访问性注意事项
默认情况下 samp 渲染为等宽字体,但不带背景或边框——这容易让它和普通文本混淆。建议加基础样式:
samp {
font-family: ui-monospace, 'SFMono-Regular', Consolas;
background-color: #f6f6f6;
padding: 0.1em 0.3em;
border-radius: 3px;
}
关键点:
• 不要用 font-weight: bold,输出文本通常不含强调语义
• 避免设置过小的 font-size(尤其移动端),实测小于 14px 时 NVDA 屏幕阅读器可能跳过朗读
• 如果输出含颜色信息(如红字错误),不能仅靠 color 属性传达,需补充文字说明(例:Error: not found 必须配文字“错误提示以红色显示”)
和 output 标签的区别
output 是表单控件的实时计算结果(如滑块拖动后显示的数值),属于「用户交互产生的动态值」;samp 是「静态复现的已有输出」。两者不可互换:
- 表单中实时显示
—— 正确 - 把 curl 命令的响应体塞进
output—— 错误,应使用samp - 某些框架生成的「模拟终端」组件,若内容固定且非用户输入触发,仍属
samp范畴
真正容易被忽略的是:很多文档把命令输出截图替代 samp,既无法复制,又对色觉障碍者不友好——只要输出是纯文本,就值得用语义化标签写出来。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











