文章导航

CSS3 overflow-wrap

2019-2-5 23:41| 作者: admin| 查看: 97| 评论: 0|来自: 蚂蚁部落

overflow-wrap属性规定是否允许在单词内进行断行,也就是将一个单词从其内部折断。

可以防止字符串过长导致的溢出现象,可能不少朋友感觉此属性功能与其他CSS属性功能相似。

的确如此,与两个属性与其功能相似,甚至是一模一样:

(1).word-wrap:此属性当前是overflow-wrap别名,word-wrap原本是IE浏览器的私有属性,但是各个浏览器对其支持相当好,当前CSS3已经将其重命名为overflow-wrap。

(2).word-break:此属性功能的确与overflow-wrap非常相似,但是也有区别的。

更多内容参阅如下两篇文章:

(1).word-break属性参阅CSS3 word-break一章节。

(2).与word-break属性区别参阅overflow-wrap与word-break 区别一章节。

下面进入正题,将通过代码实例详细介绍一下此属性的用法。

语法结构:

[CSS] 纯文本查看 复制代码
overflow-wrap:normal|break-word|anywhere

参数解析:

(1).normal:默认值,保持浏览器的默认处理。

(2).break-word:规定当字符串过长时,允许在单词内断行。

(3).anywhere:规定当字符串过长时,允许在单词内断行,与break-word肯定有不同,后面介绍。

前面对两个属性值进行简短陈述,下面通过代码实例对它们进行详细解释。

代码实例如下:

[HTML] 纯文本查看 复制代码运行代码
<!DOCTYPE html> 
<html> 
<head> 
<meta charset=" utf-8"> 
<meta name="author" content="http://www.softwhy.com/" /> 
<title>蚂蚁部落</title> 
<style type="text/css">
div{
  width:150px;
  height:60px;
  margin-top:5px;
  background-color: #ccc;
} 
</style> 
</head> 
<body> 
<div>I am a good student ,and you?</div> 
</body> 
</html>

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201902/05/234754echicds6s8roonxu.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上述代码并没有显式定义overflow-wrap属性,所以默认值是normal。如果一行的空间无法容纳整个字符串,那么就会在一个恰当的位置换行,比如上述代码中,很明显第一行无法容纳整个字符串,最后的空隙也无法容纳单词"student",会在单词之间的空隙处断行显示,单词不会被从内部折断。

[HTML] 纯文本查看 复制代码运行代码
<!DOCTYPE html> 
<html> 
<head> 
<meta charset=" utf-8"> 
<meta name="author" content="http://www.softwhy.com/" /> 
<title>蚂蚁部落</title> 
<style type="text/css">
div{
  width:150px;
  height:70px;
  background-color: #ccc;
  margin-top:5px;
} 
</style> 
</head> 
<body> 
<div>I am a good AAAAAAAAAAAAAAAAAAAAA ,and you?</div> 
</body> 
</html>

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201902/05/234817oajjac62x6z6j16e.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

有时候会遇到过长的单词或者类似连续的数字。

那么单词会换行显示,如果换行后也无法被完全容纳,也不会折断换行。

也就是说,当属性值为normal的时候,是不允许单词内断行的。

[HTML] 纯文本查看 复制代码运行代码
<!DOCTYPE html> 
<html> 
<head> 
<meta charset=" utf-8"> 
<meta name="author" content="http://www.softwhy.com/" /> 
<title>蚂蚁部落</title> 
<style type="text/css">
div{
  width:150px;
  height:90px;
  background-color: #ccc;
  margin-top:5px;
  overflow-wrap:break-word;
} 
</style> 
</head> 
<body> 
<div>I am a good student ,and you?</div> 
<div>I am a good AAAAAAAAAAAAAAAAAAAAA ,and you?</div> 
</body> 
</html>

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201902/05/234841l8cqfqiiqczbqszd.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

overflow-wrap属性的作用是规定是否允许字符串进行断行以防止溢出。

上述代码设置属性值为break-word,从属性值的名称可以猜测,它允许单词内断行以防止溢出。

但是有一点的宽容度,会给过长的单词一次机会,比如"student"在第一行已经无法容纳,所以再给它一次机会,让其换行显示。正所谓再一不再二,"AAA..."实在太长了,虽然给它一次换行的机会,但是第二个行依然无法将其容纳,所以会将其断行显示,以防止溢出。

[HTML] 纯文本查看 复制代码运行代码
<!DOCTYPE html> 
<html> 
<head> 
<meta charset=" utf-8"> 
<meta name="author" content="http://www.softwhy.com/" /> 
<title>蚂蚁部落</title> 
<style type="text/css">
div{
  width:150px;
  height:90px;
  background-color: #ccc;
  margin-top:5px;
  overflow-wrap:anywhere;
} 
</style> 
</head> 
<body> 
<div>I am a good student ,and you?</div> 
<div>I am a good AAAAAAAAAAAAAAAAAAAAA ,and you?</div> 
</body> 
</html>

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201902/05/234905poia0fbyaibva1fa.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

从运行效果来看,好像anywhere属性值与break-word属性值表现完全一样。

其实两者还是有差别,看如下代码实例:

[HTML] 纯文本查看 复制代码运行代码
<!DOCTYPE html> 
<html> 
<head> 
<meta charset=" utf-8"> 
<meta name="author" content="http://www.softwhy.com/" /> 
<title>蚂蚁部落</title> 
<style type="text/css">
div{
  width:-moz-min-content;
  height:190px;
  background-color: #ccc;
  margin-top:5px;
  overflow-wrap:break-word;
} 
</style> 
</head> 
<body> 
<div>I am a good stud</div> 
</body> 
</html>

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201902/05/234933dj21lkgu12dfuugv.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

关于min-content属性值的具体作用可以参阅CSS max/min-content一章节。

特别说明:当前只有火狐浏览器支持anywhere属性值,当然随着时间的推移,支持度随时发生变化。

将overflow-wrap属性值设置为anywhere,运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201902/05/234955pvh22ix2mm2hlhzf.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

代码分析如下:

(1).overflow-wrap值为break-word,width值为min-content时,断行发生在单词间空白间隔处。

(2).overflow-wrap值为anywhere,width值为min-content时,断行可以发生在构成单词的任意字符处。

最后再解答一个问题,可能有朋友会问,汉字是如何断行呢,汉字天生就是被断行的命,只要宽度容纳不开,立马断行,从来不考虑其他条件。


鲜花

握手

雷人

路过

鸡蛋

最新评论

返回顶部