HTML 的 <pre> 元素

1. 什么是

复制代码
元素

<pre> 是 HTML 中一个非常实用的元素,全称是 preformatted text (预格式化文本)。它的核心作用就是保留文本中的空格、换行和缩进,让浏览器按照源代码中的原始格式来显示内容。

在普通的 HTML 元素中,连续的空格会被合并为一个,换行符也会被忽略。但 <pre> 元素打破了这一规则,它会原封不动地展示文本的排版。

2. 基本用法

<pre> 的使用非常简单,只需要把需要保留格式的文本放在开始标签和结束标签之间即可:

html 复制代码
<pre>
  床前明月光,
  疑是地上霜。
  举头望明月,
  低头思故乡。
</pre>

浏览器会按照上面代码中的缩进和换行来显示这段文字,而不是像普通段落那样自动排版。

3. 与普通文本的对比

为了更直观地理解 <pre> 的作用,我们来看一个对比示例:

html 复制代码
<p>这是普通段落。
  这里有多个空格和换行,
  但浏览器会忽略它们。</p>

<pre>这是预格式化文本。
  这里有多个空格和换行,
  浏览器会完整保留。</pre>

在浏览器中,<p> 中的多余空格和换行会被折叠,而 <pre> 中的格式会被完整呈现。

4. 常用场景

<pre> 元素在以下场景中非常有用:

  • 展示代码片段 :配合 <code> 元素使用,是展示代码最经典的方式
  • 显示 ASCII 艺术:字符画依赖精确的空格和换行
  • 展示日志文件:日志通常有固定的缩进格式
  • 呈现数据表格:用空格对齐的纯文本表格
  • 显示配置文件:如 YAML、INI 等对缩进敏感的文件内容

5. 与 元素配合

在实际开发中,<pre> 经常与 <code> 元素一起使用,用来展示代码块:

html 复制代码
<pre><code>
function greet(name) {
  console.log("Hello, " + name + "!");
}
</code></pre>

<code> 负责语义化地标记代码内容,<pre> 负责保留代码的缩进和换行格式,两者配合相得益彰。

6. 样式定制

浏览器默认会给 <pre> 元素使用等宽字体,但我们可以通过 CSS 自定义样式:

css 复制代码
pre {
  background-color: #f5f5f5;
  padding: 16px;
  border-radius: 4px;
  font-family: "Courier New", monospace;
  font-size: 14px;
  line-height: 1.5;
  overflow-x: auto;
}

其中 overflow-x: auto 特别重要,当内容超出容器宽度时,可以出现横向滚动条,避免破坏页面布局。

7. 注意事项

使用 <pre> 元素时有几点需要留意:

  • 特殊字符转义 :<pre> 内部的 <、>、& 等字符仍然需要转义,否则会被浏览器解析为标签
  • 长行处理:默认情况下超长行不会自动换行,需要配合 CSS 处理
  • 可访问性 :屏幕阅读器对 <pre> 内容的朗读方式可能与普通文本不同
  • 嵌套限制 :<pre> 内部可以包含行内元素,但要注意语义的合理性

8. 总结

<pre> 元素是 HTML 中处理预格式化文本的重要工具。它保留了文本的原始排版,特别适合展示代码、日志和任何对格式有要求的文本内容。配合 <code> 元素和适当的 CSS 样式,可以打造出清晰美观的代码展示效果。

相关推荐
lemon_sjdk5 分钟前
从一段真实的 Electron IM 前端代码,看高级前端的工程化修养
前端·electron·状态模式·im
晓得迷路了25 分钟前
栗子前端技术周刊第 150 期 - Stack Overflow 开发者调查结果、TanStack Start 1.0...
javascript·css·后端
IT_陈寒29 分钟前
Vite性能优化完全指南
前端·人工智能·后端
燕落南枝30 分钟前
HTML 表单入门:表单容器、文本框与密码框属性详解
前端·microsoft·html
TYC944 分钟前
Mac创建Vue3+TypeScript或者React+TypeScript项目
前端·javascript·typescript
程序员小孔.1 小时前
基于 SpringBoot + UniApp + Vue 的家政服务系统设计与实现
前端·数据库·spring boot·python·docker·微信小程序
Profile排查笔记1 小时前
指纹浏览器 GitHub 项目怎么选?先看仓库交付的是工具、内核还是管理器
前端·人工智能·后端·自动化
风骏时光牛马1 小时前
云原生驱动的分布式高可用架构设计与落地实践
前端
梦曦i1 小时前
uni-app x 专属 Pinia 库正式发布
前端·pinia·uni-app x
燕落南枝1 小时前
HTML 学习:input 单选、复选与文件域详解
服务器·学习·html