HTML文本换行显示几种方法总结

在HTML中实现文本换行显示有以下几种常用方法:

1. 使用 <br> 标签

最直接的换行方式:

html 复制代码
<p>
  这是第一行<br>
  这是第二行<br>
  这是第三行
</p>

2. 使用 <pre> 标签

保留原始文本格式,包括换行和空格:

html 复制代码
<pre>
这是第一行
这是第二行
  这里保留了空格
</pre>

3. 使用 CSS 样式

方式一:white-space: pre-line

html 复制代码
<p style="white-space: pre-line;">
  这是第一行
  这是第二行
  这是第三行
</p>

方式二:white-space: pre-wrap

html 复制代码
<div style="white-space: pre-wrap;">
  这是第一行
  这是第二行
  这里有很多空格      也会被保留
</div>

方式三:white-space: pre

html 复制代码
<p style="white-space: pre;">
  文本将完全按照源代码中的格式显示
  包括所有换行和空格
</p>

4. 不同CSS属性对比

html 复制代码
<div style="white-space: normal;">默认:合并空格和换行</div>
<div style="white-space: nowrap;">不换行:所有内容在一行</div>
<div style="white-space: pre;">保留所有空格和换行</div>
<div style="white-space: pre-wrap;">保留换行,允许自动换行</div>
<div style="white-space: pre-line;">合并空格,保留换行</div>

5. 实战示例

html 复制代码
<!DOCTYPE html>
<html>
<head>
  <style>
    .pre-line {
      white-space: pre-line;
      background-color: #f0f0f0;
      padding: 10px;
      margin: 10px 0;
    }
    .pre-wrap {
      white-space: pre-wrap;
      background-color: #e0e0e0;
      padding: 10px;
      margin: 10px 0;
    }
  </style>
</head>
<body>
  <!-- 使用br标签 -->
  <p>第一行<br>第二行<br>第三行</p>
  
  <!-- 使用pre标签 -->
  <pre>
  这是pre标签
  保留所有格式
      包括缩进
  </pre>
  
  <!-- 使用CSS -->
  <div class="pre-line">
    这是第一行
    这是第二行
    多个空格   会被合并
  </div>
  
  <div class="pre-wrap">
    这是第一行
    这是第二行
    多个空格   会被保留
  </div>
</body>
</html>

推荐使用场景

  • 简单换行 :使用 <br> 标签
  • 需要保留格式的代码/诗歌 :使用 <pre> 标签
  • 从数据库/API获取的带换行文本 :使用 white-space: pre-line 或 white-space: pre-wrap
  • 需要响应式设计:使用CSS方式,能更好地适应不同屏幕尺寸

注意事项

  • 在HTML中直接输入的换行符(回车)默认不会被显示
  • 从JavaScript字符串或后端API获取的文本中的换行符(\n)可以使用CSS的 white-space 属性来显示
  • 如果文本内容来自用户输入,建议使用 white-space: pre-wrap 来同时保留换行和允许自动换行
    参考:https://www.abcode.cn/articles/html-newline
相关推荐
Lvan的前端笔记8 小时前
docker:每个前端项目一个 Nginx 容器还是只有一个Nginx容器
前端·nginx·docker
三天不学习9 小时前
Egg.js 4 突然爆火,原因是否归结于AI 原生落地需求爆发?
前端·javascript·全栈·egg.js
xcs194059 小时前
前端 vue 的前端页面debugger 进不去
前端·javascript·vue.js
明月_清风10 小时前
Deno 终局来了:从挑战 Node 到被 Cloudflare 收编
前端·后端·node.js
Csvn11 小时前
框架性能优化
前端
回眸&啤酒鸭13 小时前
【回眸】OpenSwarm 多智能体协作系统实战指南
大数据·前端·人工智能
用户693717500138413 小时前
2026,程序员的时代拐点到了
android·前端·后端
大龄秃头程序员13 小时前
一次 iBeacon + BLE 无感解锁方案的实现记录
前端
小兔子13 小时前
Python 的 GIL 与 free-threading:3.13 之后「去 GIL」走到哪一步了
前端
IT_陈寒13 小时前
SpringBoot自动配置差点让我加班到凌晨
前端·人工智能·后端