word-break和word-wrap的区别

本文探讨了CSS中word-wrap与word-break属性的应用场景,解释了如何利用这两个属性解决英文单词过长导致的布局问题。

在日常工作当中,我们应该都遇到过英文单词很长,就算超过了div的边界都不换行的问题,于是我们经常会去写word-break:break-all;word-wrap:break-word这两个样式来强制换行,但是可能却并没有去深究这两个到底有什么作用。

一、先看看它们的作用:

word-wrap:
css的 word-wrap 属性用来标明是否允许浏览器在单词内进行断句,这是为了防止当一个字符串太长而找不到它的自然断句点时产生溢出现象。

word-break:
css的 word-break 属性用来标明怎么样进行单词内的断句。

二、浏览器默认怎么处理:

浏览器处理英文单词的时候,默认是不断句的,如果超出了当前这一排的空间,则整体跳转到下一行,如果下一行还是放不下,则会超出边界。如下:

这里写图片描述

那么,如果加上word-wrap:break-word,来看看是什么效果。

这里写图片描述

是不是已经换行了?你可能说已经达到目的了。是吧?但是,有没有发现还有一点点不对劲。为什么英文单词那里重新换了一行的?

接下来,我们改成word-break:break-all,看看什么效果:

这里写图片描述

咦,这下就不一样了,后面没有再空一大块了。


所以这下我们清楚了,word-wrapbreak-word属性,可以使英文单词断句,但是都会重新换一行。而word-break:break-all则不需要重新换行就进行强制断句,显得更简单粗暴。

### 区别分析 #### `word-wrap` `word-wrap` 属性用于控制长单词或字符串是否可以在它们的边界内换行,以避免溢出容器。常见的取值有: - **normal**:使用默认的换行规则。 - **break-word**:允许在单词内换行,避免溢出容器[^2]。 例如,当设置 `word-wrap: break-word;` 时,即使单词很长,也会在单词内部进行换行,从而防止内容溢出容器。 #### `word-break` `word-break` 属性用于控制如何断开单词内的字符以适应容器。常见的取值有: - **normal**:使用默认的断字规则。 - **break-all**:允许在单词内的任何字符之间断开,适用于非CJK(中文、日文、韩文)语言。 - **keep-all**:不允许在单词内断开,通常用于CJK语言[^1]。 例如,当设置 `word-break: break-all;` 时,即使单词很长,也会在单词内的任意位置断开,以适应容器宽度。 #### `white-space` `white-space` 属性用于控制元素内空白的处理方式。常见的取值有: - **normal**:默认值,空白会被忽略,文本自动换行。 - **pre**:保留空白,不自动换行。 - **nowrap**:空白会被压缩,但文本不会换行。 - **pre-wrap**:保留空白,允许自动换行。 - **pre-line**:空白会被压缩,允许自动换行。 例如,当设置 `white-space: nowrap;` 时,文本不会换行,所有内容将在一行中显示,可能导致内容溢出容器。 ### 示例代码 以下是一个简单的示例,展示了这些属性的效果: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>CSS Text Overflow Example</title> <style type="text/css"> .div01 { width: 300px; height: 200px; padding: 8px; border: 2px solid #000000; word-wrap: break-word; word-break: break-all; white-space: normal; overflow: hidden; text-overflow: ellipsis; } </style> </head> <body> <div class="div01"> hello,jack,i,sandy,week,and,sandy,week,and,sandy,week,and,sandy,week,and,sandy,week,and,sandy,week,and </div> </body> </html> ``` ### 总结 - `word-wrap` 主要用于控制长单词是否可以在单词内部换行。 - `word-break` 主要用于控制单词内部的断字行为,特别是在非CJK语言中。 - `white-space` 主要用于控制空白的处理文本的换行行为。 通过合理使用这些属性,可以有效地控制文本在容器中的显示效果,避免内容溢出或不必要的换行。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值