word-break|overflow-wrap|word-wrap——CSS英文断句浅析

---恢复内容开始---

word-break|overflow-wrap|word-wrap——CSS英文断句浅析

一 问题引入

     今天在再次学习 overflow 属性的时候,查看效果时,看到如下结果,内容在 div 中国换行了,可是两个 P 元素的内容并没有换行,搜索一番没有找到系统的答案,截图到群里请教大神,才知道是英文断句的问题,但是还是不太明白。之前没有遇到这种情况,为了彻底搞清楚,英文断句,又开始学习英文断句到底是怎么回事。

 二 换行

   每种语言里都有换行,就中文而言,我们最小语言单位是字,字组成词语,在词语换行,不会影响词义,英文的最小语言单位应该是单词,而单词是用字母组成的,字母可拆分,也就是能在单词内换行,而拆分后可能影响单词的意思或者产生歧义,抑或是阅读体验不佳,这是英文换行和中文换行的差异。为了不让阅读者产生歧义,中文换行和平时用中文写作类型,在标点符号的末尾换行,就是标点符号不能在开头,词语可以换行,标点符号通常就是中文句子的断点。

  对于内容自适应的盒子,也就是宽度用内容决定的盒子,不存在换行导致歧义的问题,比如浮动盒子。对于固定宽度或者自适应容器的盒子,存在换行导致歧义的问题。

① word-break:normal|keep-all|break-all| (默认为 normal ,还有两个值,用的很少,就不写了) 

     mdn 解释和翻译:

 The word-break CSS property is used to specify whether to break lines within words.  word-break 属性是用于说明师是否在单词内换行。

Applies to   all elements

Inherited   Yes

normal: Use the default line break rule.   

keep-all:Don’t allow word breaks for CJK text, Non-CJK text behavior is the same as for nomal.  不许在中文、日语、韩语单字内换行,非CJK文本和 normal 相同。

break-all:Word breaks may be inserted between and chararcter for non-CJK(Chinese/Japanese/Korean).  可以在非CJK单字内换行。

中文换行是和我们写作一样的规则,我们主要来看书英语和数字,这三者的区别。把一串数字看成一个整体,造了一个不存在的单词 lon.....ng。

 实例

HTML

 1     <div id="outbox">
 2         <div class="innerbox">
 3             <h6>word-break:normal</h6>
 4             <p class="p1 "> These some text. lonnnnnnnnnnnnnnnnnng The lines 1234567889123456789 will break at any character character.</p>
 5         </div>
 6         <div class="innerbox">
 7             <h6>word-break:keep-all</h6>
 8             <p class="p2 ">These some text. lonnnnnnnnnnnnnnnnnng The lines 1234567889123456789 will break at any character character.</p>
 9         </div>
10         <div class="innerbox">
11             <h6>word-break:break-all</h6>
12             <p class="p3 ">These some text. lonnnnnnnnnnnnnnnnnng The lines 1234567889123456789 will break at any character character.</p>
13         </div>
14     </div>

 

CSS:

大家共用的 outbox 和 所有p元素:

 1      #outbox {
 2             width: 160px;  //外层盒子指定宽度,内部盒子可以适应外部盒子的宽度
 3             border: 1px solid green;
 4         }
 5         
 6         p {
 7             font-size: 16px;
 8             border: 2px solid red;
 9             padding: 5px;
10             background: #f29705;
11         }

 

p1,p2, p3 的样式:

 1      .p1 {
 2             word-break: normal;
 3         }
 4         
 5         .p2 {
 6             word-break: keep-all;
 7         }
 8         
 9         .p3 {
10             word-break: break-all;
11         }
12         

 

效果图:

 

观察各个属性值得表现,可以看到 word-break 的各种值得区别。

  word-break:normal——按照一般的断点断句,可能溢出;

  word-break:break-all——content-edge处断句,单词可能被破坏,不会溢出;

  word-break:keep-all——断点断句,可能溢出,表现和 word-break:normal 相同。


 

② overflow-wrap:normal |  break-word

  MDN 的解释和我的翻译:

The overflow-wrap property is used to specify whether or not the browser may break lines within words in order to prevent overflow when an otherwise unbreakable string is too long to fit in its containing box.    overflow-wrap 属性是用来说明当一个不可截断的字符串太长而不能被包含在盒子中时,是否在单词内换行以阻止单词溢出。也就是当一个单词的长度比包含它的盒子还要宽,用这个属性能在这个单词内换行以达到不溢出的效果。 

Applies to  all elements

Inherited   yes

normal: Indicates that lines may only break at normal word break points. 声明只能在单词的断点换行。

break-word: Indicates that normally unbreakable words may be broken at arbitrary points if there are no otherwise acceptable break points in the line. 声明如果没有可断点处,则可以在单词的任何处换行。(不好理解好)

例子:

pa  pb 的html:  

 

 2 <div id="outbox">
<div class="point "> 3 <h4>overflow-wrap:normal</h4> 4 <p class="pa "> These some text. lonnnnnnnnnnnnnnnnnng The lines 1234567889123456789 will break at any character character.</p> 5 </div> 6 <div class="point "> 7 <h4>overflow-wrap:break-word</h4> 8 <p class="pb ">These some text. lonnnnnnnnnnnnnnnnnng The lines 1234567889123456789 will break at any character character.</p> 9 </div> 10 </div>

 

CSS:

1         .pa {
2             overflow-wrap: normal;
3         }
4         
5         .pb {
6             overflow-wrap: break-word;
7         } 

 

效果:

ADAD

 

观察效果图,可以看出两者的区别:

  overflow-wrap:normal——断点断句,单词不被破坏,可能溢出;

  overflow-wrap:break-word——先断点,单词过长再在末尾断句,单词可能被破坏,不会溢出。


 

③ word-wrap: normal | break-word 

  MDN 的描述和翻译:

  

 

HTML:

 1  <div id ="outbox"> 
 2     <div class="point ">
 3             <h4>word-wrap:normal</h4>
 4             <p class="pA "> These some text. lonnnnnnnnnnnnnnnnnng The lines 1234567889123456789 will break at any character character.</p>
 5         </div>
 6         <div class="point ">
 7             <h4>word-wrap:break-word</h4>
 8             <p class="pB "> These some text. lonnnnnnnnnnnnnnnnnng The lines 1234567889123456789 will break at any character character.</p>
 9         </div>
10 </div>

 

pA pB的CSS:

1        .pA {
2             word-wrap: normal;
3         }
4         
5         .pB {
6             word-wrap: break-word;
7         }    

 

效果图:

观察效果图,可以看出两者的区别:

  word-wrap规定如何断句,

  word-wrap:normal——只是断点断句,单词过长就可能溢出;

  word-wrap: break-word——先断点断句,单词过长,一行放不下,再在任末尾断句,单词可能被破坏,不会溢出。

 

 

 

 

---恢复内容结束---

转载于:https://www.cnblogs.com/jackzhoumine/p/6254315.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469601.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-SiamRPN(2017)

3.2 SiamRPN(2017) 3.2.1 网络结构 Siam-RPN提出了一种基于RPN的孪生网络结构&#xff0c;由孪生子网络和RPN网络组成&#xff0c;前者用来提取特征&#xff0c;后者用来产生候选区域。其中&#xff0c;RPN子网络由两个分支组成&#xff0c;一个是用来区分目标和背景的分类分…

ubuntu 18 Cannot find installed version of python-django or python3-django.

ubuntu系统下安装了django&#xff0c;但是启动django项目时报错 Cannot find installed version of python-django or python3-django. 原因&#xff1a; ubuntu大于14版本的应该安装python3-django 解决办法&#xff1a; apt-get install python3-django 如果提示你有几个…

智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-DaSiamRPN(2018)

DaSiamRPN网络的全称为Distractor-aware SiamRPN&#xff0c;是基于SiamRPN网络结构&#xff0c;提出更好的使用数据&#xff0c;针对跟踪过程的干扰物&#xff0c;利用更好的训练方式是跟踪更加的鲁棒。 DaSiamRPN认识到了现有的目标追踪数据集中存在的不平衡问题&#xff0c…

智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-SiamRPN++(2019)

3.4.1 模型结构 SiamRPN网络结构如下图所示&#xff0c;虚线的两边都是网络结构图&#xff0c;虚线左侧是特征提取网络结构&#xff0c;右侧是RPN结构图。其实SiamRPN的网络结构与SiamRPN网络结构十分相似&#xff0c;而SiamRPN就是在SiamRPN的基础上加入许多的创新点。 SiamR…

lanmp之二 (奇葩问题)

ps&#xff1a;该篇是接 lanmp —— 动静分离 lanmp —— 奇葩问题 话说&#xff0c;在 搭建 bbs.abc.com &#xff08;discuz论坛&#xff09;的 时候。。。。 1、说明&#xff1a;web机器上以前已经有一个 discuz 旧论坛 要做数据迁移&#xff08;改域名/拷贝数据/迁移网站&a…

[已解决]user is not in the sudoers file. This incident will be reported.(简单不容易出错的方式)

linux Ubuntu中报错&#xff0c;XXX is not in the sudoers file. This incident will be reported. 今天在学习的时候&#xff0c;不小心把自己的用户sudo玩坏了&#xff08;Broken sudo&#xff09;&#xff0c;于是上谷歌搜索XXX is not in the sudoers file. This inciden…

智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-SiamMask(2019)

与普通的视频跟踪网络不同的是&#xff0c;SiamMask可以同时完成视频跟踪和实例级分割的任务。如下图所示&#xff0c;与传统的对象跟踪器一样&#xff0c;依赖于一个简单的边界框初始化&#xff08;蓝色&#xff09;并在线操作。与ECO&#xff08;红色&#xff09;等最先进的跟…

编译器的大小端模式

大端模式&#xff08;Big_endian&#xff09;&#xff1a;字数据的高字节存储在低地址中&#xff0c;而字数据的低字节则存放 在高地址中。 小端模式&#xff08;Little_endian&#xff09;&#xff1a;字数据的高字节存储在高地址中&#xff0c;而字数据的低字节则存放 在低地…

【原】jQuery编写插件

分享一下编写设置和获取颜色的插件&#xff0c;首先我将插件的名字命名为jquery.color.js。该插件用来实现以下两个功能1.设置元素的颜色。2.获取元素的颜色。 先在搭建好如下编写插件的框架&#xff1a; ;(function($){//这里编写插件代码 })(jQuery); 我这里采用jQuery.fn.ex…

数据结构链表之单向链表:Python3 实现单向链表——1

Python3 实现单向链表 链表定义与简介 定义&#xff1a;链表与顺序表(Python中列表)性质相反&#xff0c;链表是物理单元上非顺序的、非连续的&#xff0c;在逻辑顺序上其数据元素是通过指针实现的&#xff0c;组成链表的每一个元素也可以叫做链表的节点&#xff0c;节点可以…

C语言(贪心法)

C语言有这样一个规则&#xff0c;每一个符号应该包含尽可能多的字符。也就是说&#xff0c;编译器将程序分解成符号的方法是&#xff0c;从左到右一个一个字符地读入&#xff0c;如果字条可能组成一个符号&#xff0c;那么再读入下一个字符&#xff0c;判断已经读入的两个字符组…

数据结构链表之双向链表:Python3 实现双向链表——2

Python3 实现双向链表 双向链表 定义&#xff1a;双向链表是链表中的一种&#xff0c;双向链表也叫双链表&#xff0c;它由多个节点组成&#xff0c;每个节点由一个数据域和两个指针域组成&#xff0c;一个指针指向前驱元素&#xff0c;一个指向后继元素 双向链表一般用来构…

linux驱动之ioctl

大部分驱动除了需要具备读写设备的能力之外&#xff0c;还需要具备对硬件控制的能力。 一、在用户空间&#xff0c;使用ioctl系统调用来控制设备&#xff0c;原型如下&#xff1a; int ioctl(int fd,unsigned long cmd,...); /* fd:文件描述符 cmd:控制命令 ...:可选参数:插入*…

数据结构链表之单链表的快慢指针——3

单链表之快慢指针 单链表的快慢指针简介 快慢指针指链表中定义两个指针&#xff0c;两个指针的移动速度一快一慢&#xff0c;一般快指针移动步长为慢指针的两倍 快慢指针适合解决的几个典型问题 中间值问题单向链表是否有环问题有环链表的入口问题 先定义一个简单的节点 …

【Pytorch神经网络基础理论篇】 04 线性代数

同学你好&#xff01;本文章于2021年末编写&#xff0c;已与实际存在较大的偏差&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)…

Bootstrap实现弹出框和提示框效果代码

一、Bootstrap弹出框使用过JQuery UI应该知道&#xff0c;它里面有一个dialog的弹出框组件&#xff0c;功能也很丰富。与jQuery UI的dialog类似&#xff0c;Bootstrap里面也内置了弹出框组件。打开bootstrap 文档可以看到它的dialog是直接嵌入到bootstrap.js和bootstrap.css里面…

数据结构链表之循环链表——4

循环链表与约瑟夫问题 循环链表定义 定义&#xff1a;循环链表的定义十分简单&#xff0c;只需使一条单链表的尾部结点指向头结点&#xff0c;即可完成循环链表 循环链表的构建 class Node:def __init__(self, item):self.item itemself.next Nonefirst Node(aa) secon…

【Pytorch神经网络基础理论篇】 05 矩阵计算

同学你好&#xff01;本文章于2021年末编写&#xff0c;已与实际存在较大的偏差&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)…

统计iOS项目的总代码行数的方法

1、打开终端&#xff0c; 2、用cd命令 定位到工程所在的目录&#xff0c;然后调用以下命名即可把每个源代码文件行数及总数统计出来&#xff1a; find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.h&quo…

【Pytorch神经网络基础理论篇】 06 自动求导+导数与微分

同学你好&#xff01;本文章于2021年末编写&#xff0c;已与实际存在较大的偏差&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)…