
用 <code> 包裹内联代码,但别乱套嵌套
HTML 里表示一小段代码(比如函数名、变量、命令),就用 <code> 标签,它语义清晰、默认有等宽字体和轻微背景,浏览器也认得这是“代码”。但注意:<code> 只适合单行或短片段,比如 console.log() 或 git status。别把它当 <pre class="brush:php;toolbar:false;"></code> 用——往里面塞多行缩进代码,格式会塌,换行也不保留。</p>
<p>常见错误现象:<pre class="brush:php;toolbar:false;"><code>function foo() {<br> return true;<br>}</pre> 这样写,<code><br> 不生效,实际渲染成一行且缩进丢失。
- 正确做法:单行代码直接
<code>JSON.parse()</code></li> <li>多行代码必须配 <code><pre class="brush:php;toolbar:false;">
,<pre class="brush:php;toolbar:false;"><code>...</code>
<code> 里别再嵌 <code><div>、<code><p></p>等块级标签,HTML 不允许<pre class="brush:php;toolbar:false;"></code> + <code><code></code> 是标准组合,不是可选搭配</H3> <p>要展示带缩进、换行、空格的完整代码块(比如配置文件、函数体、命令输出),必须用 <code><pre class="brush:php;toolbar:false;"></code> 包一层,再把 <code><code></code> 放进去。因为 <code><pre class="brush:php;toolbar:false;"></code> 保留空白符和换行,<code><code></code> 提供语义和基础样式,二者缺一不可。</p> <p>使用场景:文档里贴一段 <code>package.json</code> 片段、Node.js 错误堆栈、Shell 命令执行结果。</p><div class="aritcle_card flexRow"> <div class="artcardd flexRow"> <a class="aritcle_card_img" href="/ai/1389" title="达奇AI论文写作"><img src="https://img.php.cn/upload/ai_manual/000/000/000/175680423945041.png" alt="达奇AI论文写作" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a href="/ai/1389" title="达奇AI论文写作">达奇AI论文写作</a> <p>达奇AI论文辅助写作平台,在校学生、职场精英都在用的AI论文辅助写作平台</p> </div> <a href="/ai/1389" title="达奇AI论文写作" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免费学习笔记(深入)</a>”;</p> <ul> <li><code><pre class="brush:php;toolbar:false;"><code class="json">{"name": "demo"}</code></pre>—— 推荐,加了class方便后续语法高亮- 只用
<pre class="brush:php;toolbar:false;"></code> 不套 <code><code></code>:语义缺失,屏幕阅读器读不出“这是代码”</li> <li>只用 <code><code></code> 不套 <code><pre class="brush:php;toolbar:false;"></code>:缩进和换行全丢,<code>if (x) {</code> 和 <code> y();</code> 会挤成一行</li> </ul> <H3>别忽略 <code>tabindex</code> 和可访问性问题</H3> <p>代码块默认不可聚焦、无法被键盘导航到,对屏幕阅读器用户不友好。尤其当代码是关键操作步骤(比如复制命令)时,得让它能被 tab 到。</p> <p>性能 / 兼容性影响:加 <code>tabindex="0"</code> 几乎无成本,所有现代浏览器都支持,也不会触发重排。</p> <ul> <li>给 <code><pre class="brush:php;toolbar:false;"></code> 加 <code>tabindex="0"</code>,比如 <code><pre class="brush:php;toolbar:false;" tabindex="0"><code>npm install</code></pre> - 如果代码块带复制按钮,建议同时加
role="region"和aria-label,例如aria-label="命令:npm install" - 别给
<code>单独加tabindex——它不是焦点容器,加了也没用 - 确认你项目里已加载语法高亮库,且初始化逻辑覆盖了这些
class - 推荐写法:
<pre class="brush:php;toolbar:false;"><code class="shell">curl -X GET /api/users</code></pre>(shell比bash更通用) - 避免用模糊名如
code-block或example,会断掉高亮链路
语言标识和语法高亮靠 class,不是 HTML 内置能力
HTML 本身不识别 language-python 或 language-js,这些只是约定俗成的 class 名,供外部 JS 库(如 Prism、highlight.js)或 CSS 规则匹配用。没配对应脚本,加了也白加。
容易踩的坑:以为写了 class="bash" 就自动高亮,结果页面还是黑白一片。
<pre class="brush:php;toolbar:false;"></pre> 和 <code> 各自的职责边界,以及没人提但实际存在的可访问性缺口。










