white-space 处理 textarea 文本内容的换行 空格

2023-12-26 09:48

本文主要是介绍white-space 处理 textarea 文本内容的换行 空格,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、前言

前端开发可能会遇到这样的场景,用户通过 <textarea> 文本域输入文本,前端拿到数据后需要对文本内容进行空白符处理,进行换行等。
如果直接就将字符串显示在界面中,得到的可能不是我们所期待的效果。
接下来记录通过 css 的 white-spaceword-break 实现文本处理空白格,文本换行。

二、默认情况下,文本空白符的处理

空白符,指的是空格、换行、制表符。

如下图,通过 <textarea> 输入几种测试格式的文本。
在这里插入图片描述

<style>.str {width: 300px;border: 1px solid #333;margin: 30px auto;padding: 10px;}
</style>
<div id="str" class="str"></div>
<script>// 从 textarea 拿到的数据const str = '哈哈哈\n嘎嘎嘎 哈哈哈\n嘎嘎嘎   哈哈哈哈\nProgress is the activity of today and the assurance of tomorrow . incomprehensibilitieeeeeeeeeeeeeeeeeeeeee\n哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇\n\n换两行'document.getElementById('str').textContent = str
</script>

将上面的代码运行结果进行截图:
在这里插入图片描述

从上图可以看到文本的显示并不是我们想要的效果,本来在文本域中换行的地方,实际上都没换行,而是一个空格。
这是因为默认情况下,所有空格、换行、制表符合并成一个空格,遇到边界文本自动换行。

三、word-break 实现处理空白符 实现换行

我们可以通过 css 的 word-break 来处理空白符。

1.nowrap

word-break: nowrap; 所有的空格、换行、制表符合并成一个空格,遇到边界,文本不换行,除非遇到 <br /> 标签。

在这里插入图片描述

如上图的效果(文字太长不好截图,中间的英文被我删除了一部分),连续出现的换行、空白、制表符会合并成一个,并且文本不会进行换行。

2.pre

pre,会保留所有的空白符(空格、换行、制表符),文本遇到边界不自动换行,类似 HTML 中的 <pre> 标签。

在这里插入图片描述

如上图效果,连续多个空白多都可以正常的出现,但是文本过长不会自动换行。

3.pre-line

word-break: pre-line; 会保留空格、换行、制表符,将连续出现的多个空白符合并为一个,文本遇到边界自动换行。

在这里插入图片描述

如上图效果,第三行本来有连续出现两个空格符,被合并成一个。连续出现的换行符正常显示,并且文本自动换行。(英文单词太长,没有自动换行导致溢出的问题后面再处理)

4.pre-wrap

word-break: pre-wrap; 会保留所有的空白符(空格、换行、制表符),文本遇到边界自动换行。

在这里插入图片描述

如上图效果,全部空白格都会正常显示,第三行本来有连续出现两个空格符也正常出现了。

四、英文长句没有自动换行导致溢出

浏览器默认情况下,遇到长单词且一行放不下时,就会将长单词进行换行处理。
在这里插入图片描述

如上图,incomprehensibilitieeeeeeeeeeeeeeeeeeeeee 单词过长,无法在 …tomorrow 后面继续显示下去,所以会换到下一行显示。
但是 incomprehensibilitieeeeeeeeeeeeeeeeeeeeee 单词本身太长,一行依旧容不下,这时就会出现溢出现象。

1.word-wrap: break-word 进行单词断句

注:word-wrap 属性原本属于微软的一个私有属性,在 CSS3 现在的文本规范草案中已经被重名为 overflow-wrap 。 word-wrap 现在被当作 overflow-wrap 的 “别名”。

在这里插入图片描述

如上图效果,长单词 incomprehensibilitieeeeeeeeeeeeeeeeeeeeee 会换行,并且一行显示不下会再换行显示。

2.word-break: break-all 进行单词断句

在这里插入图片描述
如上图效果,长单词会被直接断句,而不是换到下一行,可以防止长单词前边留下大片空白,但是单词被直接截断,对阅读不太友好。

3.word-break: break-word 进行单词断句

在这里插入图片描述
效果等同 word-wrap: break-word;

这篇关于white-space 处理 textarea 文本内容的换行 空格的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/538956

相关文章

Python自动化处理手机验证码

《Python自动化处理手机验证码》手机验证码是一种常见的身份验证手段,广泛应用于用户注册、登录、交易确认等场景,下面我们来看看如何使用Python自动化处理手机验证码吧... 目录一、获取手机验证码1.1 通过短信接收验证码1.2 使用第三方短信接收服务1.3 使用ADB读取手机短信1.4 通过API获取

Linux使用cut进行文本提取的操作方法

《Linux使用cut进行文本提取的操作方法》Linux中的cut命令是一个命令行实用程序,用于从文件或标准输入中提取文本行的部分,本文给大家介绍了Linux使用cut进行文本提取的操作方法,文中有详... 目录简介基础语法常用选项范围选择示例用法-f:字段选择-d:分隔符-c:字符选择-b:字节选择--c

Python自动化Office文档处理全攻略

《Python自动化Office文档处理全攻略》在日常办公中,处理Word、Excel和PDF等Office文档是再常见不过的任务,手动操作这些文档不仅耗时耗力,还容易出错,幸运的是,Python提供... 目录一、自动化处理Word文档1. 安装python-docx库2. 读取Word文档内容3. 修改

如何解决Pycharm编辑内容时有光标的问题

《如何解决Pycharm编辑内容时有光标的问题》文章介绍了如何在PyCharm中配置VimEmulator插件,包括检查插件是否已安装、下载插件以及安装IdeaVim插件的步骤... 目录Pycharm编辑内容时有光标1.如果Vim Emulator前面有对勾2.www.chinasem.cn如果tools工

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题小结

《SpringBoot整合ShedLock处理定时任务重复执行的问题小结》ShedLock是解决分布式系统中定时任务重复执行问题的Java库,通过在数据库中加锁,确保只有一个节点在指定时间执行... 目录前言什么是 ShedLock?ShedLock 的工作原理:定时任务重复执行China编程的问题使用 Shed

Redis如何使用zset处理排行榜和计数问题

《Redis如何使用zset处理排行榜和计数问题》Redis的ZSET数据结构非常适合处理排行榜和计数问题,它可以在高并发的点赞业务中高效地管理点赞的排名,并且由于ZSET的排序特性,可以轻松实现根据... 目录Redis使用zset处理排行榜和计数业务逻辑ZSET 数据结构优化高并发的点赞操作ZSET 结

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构