当前位置: 首页 > news >正文

文本换行问题

目录

问题描述

问题解决

前端解决(推荐)

1.<br>替换

2.使用CSS属性white-space(推荐)


问题描述

前端中的<textarea>标签输入多行文本,传输到MySQL数据库后,再取出渲染到一个<div>标签中,出现“文本不换行,文字挤在一起

具体问题如下图所示:

<textarea>的内容转移到<div>时,不会自动换行

问题解决

分析问题后,问题可以由“前端”或者“后端”两个方面解决。

为方便,这里使用“点击按钮”的方式,来模拟前端从后端获取数据的过程

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><style>html,body {margin: 0;padding: 0;}.container {height: 100vh;display: flex;flex-direction: column;justify-content: center;align-items: center;gap: 20px;background-color: #ccc;}#myTextarea {width: 50%;height: 200px;font-size: 16px;}#myDiv {background-color: white;}</style>
</head><body>
<div class="container"><textarea id="myTextarea"></textarea><button id="myButton">点击</button><div id="myDiv"></div>
</div>
<script>
window.onload = function () {const button = document.getElementById('myButton');const textarea = document.getElementById('myTextarea');const div = document.getElementById('myDiv');button.addEventListener('click',function (){div.textContent = textarea.value;})
}
</script>
</body></html>

前端解决(推荐)

1.<br>替换

在将文本渲染到div前,可以用JavaScript将换行符替换为HTML的换行标签<br>

const text = textarea.value.replace(/\n/g,'<br>');
div.innerHTML = text;

效果:

  • 问题:这种方式必须使用innerHTML渲染,这样容易被XSS攻击,不建议使用

2.使用CSS属性white-space(推荐)

无需修改文本,直接通过CSSdiv保留换行符

#myDiv {background-color: white;white-space: pre-wrap; /* 保留换行和空格,自动换行 */
}

扩展

  • white-space:pre-wrapwhite-space:pre都是CSS中用于控制文本空白(空格、换行等)显示方式的属性,但是它们在处理“自动换行”的行为上有明显区别
属性值空白处理自动换行处理应用场景
pre保留所有空格和换行不自动换行,内容会超出容器宽度代码块,需要严格保留格式的文本
pre-wrap保留所有空格和换行自动换行,内容会适应容器宽度普通文本

da 

使用pre

使用pre-wrap

总之,不管使用prepre-wrap都可以保留文本中的换行,并且此时不需要使用“innerHTML”,可以很好的避免XSS攻击

http://www.dtcms.com/a/312526.html

相关文章:

  • [每周一更]-(第153期):**PDF终极防护指南:命令行全栈加密+一键权限锁死实战(附脚本模板)**
  • 前端JS-调用单删接口来删除多个选中文件
  • 前端 拼多多4399笔试题目
  • Spring 03 Web springMVC
  • 如何查看SoC线程的栈起始地址及大小
  • leecode2962 统计最大元素出现至少K次的子数组
  • 第12届蓝桥杯Scratch图形化【省赛】初级组 2021年4月24日
  • 从Docker衔接到导入黑马商城以及前端登录显示用户或密码错误的相关总结(个人理解,仅供参考)
  • 从传热学基础到有限元弱形式推导:拆解热传导问题Matlab有限元离散核心
  • C++ 信号处理
  • 【AI编程工具IDE/CLI/插件专栏】-国外IDE与Cursor能力对比
  • 【从零开始速通C语言1】 - 汇编语言1
  • 西门子PLC基础指令4:输出指令、立即输出指令
  • 信用衍生工具
  • 《基于特征融合的小目标检测方法及其在医学影像领域的应用研究》论文解析
  • Coin Combinations I(Dynamic Programming)
  • ThinkPHP 与 Vue.js 结合的全栈开发模式
  • 多线程(三)-线程安全原因与解决
  • Day26-二叉树的最小深度
  • 【软考中级网络工程师】知识点之 RIP 协议
  • C++ 之 【模拟实现 优先级队列】
  • SQL 地理空间原理与实现
  • slice() 和 splice()
  • 信创及一次ORACLE到OB的信创迁移
  • 自由学习记录(76)
  • Python 的标准库 bisect 模块
  • 源码交易平台排行榜
  • 机器学习 决策树基本介绍
  • Mysql的MVCC是什么
  • HCIE-Datacom题库_07_设备【道题】