标签仅用于语义化行内代码片段,不保留格式;多行代码必须用嵌套组合,前者保换行缩进,后者声明语义,且需转义HTML字符、设置overflow-x: auto和display: block。

code 标签不是代码块容器,它只负责语义声明——告诉浏览器“这段文字是计算机代码”,不处理换行、缩进或排版。想靠它直接展示多行函数或配置片段,一定会塌成一行。
什么时候该用 code 单独出现
仅限嵌入段落中的短内容,比如函数名、命令、路径、属性名这类无需格式保留的片段:
- 调用
fetch()时传入AbortSignal - 配置项写在
package.json的scripts字段里 - 错误信息如
ReferenceError: x is not defined
这些场景下,code 是行内元素,自然跟随段落流,加粗/变色/背景色都可,但不能设 width 或 margin 来控制布局 —— 它不是盒子。
为什么 pre + code 是唯一可靠组合
单用 pre:屏幕阅读器读作“预格式化文本”,语义丢失;单用 code:所有换行和连续空格被压缩,function add(a, b) { return a + b; } 渲染后变成 function add(a, b) { return a + b; },括号错位、逻辑难读。
正确结构必须是:
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
<pre class="brush:php;toolbar:false;"><code class="js">function greet(name) {
return `Hello, ${name}!`;
}</code>
其中:
-
pre负责保留原始换行与缩进(包括 Tab 和空格) -
code声明这是代码内容,而非 ASCII 艺术或日志 -
class="js"不是必需,但能触发 Prism.js 或 highlight.js 的语法高亮
容易忽略的三个硬性要求
漏掉任意一个,轻则显示异常,重则破坏 DOM:
- HTML 特殊字符必须转义:
写成,>写成>,&写成&;否则浏览器会尝试解析为真实标签pre必须加overflow-x: auto,否则长代码行直接撑破容器,移动端尤其明显code在pre内要设display: block,否则它作为行内元素,无法响应pre的宽高与滚动控制真正卡住人的,往往不是怎么写,而是没意识到
pre和code各自只干一件事:一个管“怎么显示”,一个管“这是什么”。混用、省略、错层,都会让代码片段变形或语义失效。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










