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

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



















