单词太长导致自动换行,出现空白区域。——word-wrap和word-break

简介: 写在前面:在写页面的时候,偶尔有时会遇到下图这两种情况,一种是单词过长时会溢出div,一种是直接换行,导致出现空白区域。这两个情景就需要word-wrap、word-break这两个属性出场来解决了。闲话不扯了,本文主要内容有:word-wrap和word-break属性介绍,使用方法,他们之间的区别,浏览器兼容性,demo链接。需要的朋友可以过来参考下,喜欢的可以点个赞,希望能对大家有所帮助。应用场景:

写在前面:

在写页面的时候,偶尔有时会遇到下图这两种情况,一种是单词过长时会溢出div,一种是直接换行,导致出现空白区域。这两个情景就需要word-wrap、word-break这两个属性出场来解决了。闲话不扯了,本文主要内容有:word-wrap和word-break属性介绍,使用方法,他们之间的区别,浏览器兼容性,demo链接。需要的朋友可以过来参考下,喜欢的可以点个赞,希望能对大家有所帮助。


应用场景:

属性的应用场景

word-wrap和word-break是什么?

在mozilla的官网上找到如下的解释:

image.png

经过翻译:word-wrap:

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

word-break:

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

何谓单词内断句?

image.png

这个单词没有发生单词内断句的情况,这个单词太长了,溢出了容器的范围。

下面是发生了单词内断句的情况实例:

image.png

这里面分别使用了word-wrap:break-word;和word-break:break-all;这里可以看到,效果是一样的,下面再说说他们的区别。

word-wrap的属性介绍

image.png

w3c:word-wrap

word-wrap的浏览器支持情况:

image.png

语法:

/* 二选一 */
word-wrap: normal;
word-wrap: break-word;

解析:

normal就是大家平常见得最多的正常的换行规则,break-word如果长单词超出了一行的长度的话,在一行中有可以换行的标点时就换行,实在没有可以换行的地方时,才在单词中间换行。(这句的解析入下图)

image.png

上图就是:一行中有可以换行的标点时就换行实在没有可以换行的地方时,才在单词中间换行

word-break属性的属性介绍:

image.png

w3c上关于word-break属性的介绍

浏览器支持:

image.png

除了opera不支持以外,其他都支持(火狐也从不支持改为支持了)!

语法使用:

/* 默认normal */
word-break: normal; 
word-break: break-all; 
word-break: keep-all;

解析:几个关键字值的含义如下:

normal

   使用默认的换行规则。

break-all

   允许任意非CJK(Chinese/Japanese/Korean)文本间的单词断行。(这里是CJK中文,日文,韩文的意思)

keep-all

不允许CJK(Chinese/Japanese/Korean)文本中的单词换行,只能在半角空格或连字符处换行。非CJK文本的行为实际上和normal一致。(一致性可看下图的demo效果)

image.png


word-break:break-all和word-wrap:break-word之间的区别:

其实可以从上述demo栗子中看出来:

word-break:break-all碰到英文单词统统都换行,只要到了容器的边界就会换行不浪费一点空间,一点空隙都不放过。

word-wrap:break-word在一行中有可以换行点时就换行实在没有可以换行的地方时,才在单词中间换行。

这里所说的换行点指的是:如空格,或CJK(Chinese/Japanese/Korean)(中文/日文/韩文)之类的,让这些换行点换行,至于对不对齐,好不好看,则不关心,因此,很容易出现一片一片牛皮癣一样的空白的情况。


后话:

以上就是本文的内容了,其实大概分清他们的区别,以后碰到这类型问题,知道需要用哪个属性来解决就好了


目录
相关文章
|
前端开发 开发者 容器
|
JavaScript
Vue自定义组件实现类似elementUI的append-to-body功能,将创建的元素插入、挂载到body上面(网页最外层),适用于父元素overflow: hidden、绝对定位fixed的场景
Vue自定义组件实现类似elementUI的append-to-body功能,将创建的元素插入、挂载到body上面(网页最外层),适用于父元素overflow: hidden、绝对定位fixed的场景
|
人工智能 测试技术 Go
如何使用 Google 的 Gemini
Google Gemini是谷歌发布的人工智能大模型,能够在从数据中心到移动设备等不同平台上运行。本文将介绍Gemini以及如何使用Gemini。
2158 0
|
SQL 供应链 JavaScript
订单管理系统(OMS)搭建实战 - 低代码拖拽定制订单管理系统
订单管理系统是很多公司,特别是电商公司最常用的内部系统之一。订单管理系统的使用者通常是仓管或者运营人员,它常被用于管理用户订单,比如添加或者修改一条发货记录,与快递 API 集成以便自动更新订单号等场景。
1335 0
CSS------当内容超出div宽度后自动换行和限制文字不超出div宽度和高度
原文:CSS------当内容超出div宽度后自动换行和限制文字不超出div宽度和高度 如图:   1.自动换行 111111111111111111111111 2.限制宽高度 11111111111111111111111111  (注意:如果div放在li中还需...
4146 0
|
10月前
|
人工智能 JavaScript 前端开发
Vue 性能革命:揭秘前端优化的终极技巧;Vue优化技巧,解决Vue项目卡顿问题
Vue在处理少量数据和有限dom的情况下技术已经非常成熟了,但现在随着AI时代的到来,海量数据场景会越来越多,Vue优化技巧也是必备技能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
安全 关系型数据库 MySQL
Windows Server 安装 MySQL 8.0 详细指南
安装 MySQL 需要谨慎,特别注意安全配置和权限管理。根据实际业务需求调整配置,确保数据库的性能和安全。
1154 9
|
Android开发
Flutter适配安卓刘海、水滴屏显示全屏
Flutter适配安卓刘海、水滴屏显示全屏
395 2
|
小程序
【微信小程序-原生开发】列表 - 拖拽排序(官方组件 movable-area 和 movable-view 的用法)
【微信小程序-原生开发】列表 - 拖拽排序(官方组件 movable-area 和 movable-view 的用法)
1597 0