• 问题呈现
<div class="main">  
Nameofuser-definedcallbackfunctiontobecalledwheneverastreamtriggersanotification.   
</div>  
<style type="text/css">  
.main{  
	width: 100px;  
	border: 2px solid red;  
}  
</style>  

默认情况下,连续的单词如果在一行容纳不下的话会在空格和连字符处换行,那如何让它换行呢?

  • 认识 word-break 属性
属性值解释
normal使用浏览器默认的换行规则 (默认)
break-all允许在单词内换行
keep-all只能在半角空格或连字符处换行

现在大多说的浏览器默认的换行规则为半角空格和连字符,因此 normal 和 keep-all 的效果是一样的。

  • word-break: break-all
<style type="text/css">  
.main{  
	width: 100px;  
	border: 2px solid red;  
        word-break: break-all;  
}  
</style>  

word-break: break-all,打破了默认的换行规则。那如果想保留空格和连字符处换行怎么办?

  • 认识 word-wrap 属性
属性值解释
normal使用浏览器默认的换行规则 (默认)
break-word长单词进行换行

下来看一下演示,我把单词内部插入了几个空格

  • 先看默认的,以作对比。我把长单词多插入了几个空格,以便效果明显
<div class="main">  
	Name of user-definedcallbackfunction to be called wheneverastreamtriggersanotification.   
</div>  
<style type="text/css">  
.main{  
	width: 100px;  
	border: 2px solid red;  
}  
</style>  

默认情况下,图上标号 2 和 4 是连续长单词,中间没有空格和连字符,所以没有换行 (溢出)。

  • 下来看看 word-wrap: break-word 演示
<style type="text/css">  
.main{  
	width: 100px;  
	border: 2px solid red;  
    word-wrap: break-word;  
}  
</style>  

从图上看,保留了空格和连字符的换行状态。只是将前面图上标号 2 和 4 行的长单词进行了换行。

总结

  • word-break: break-all, 打破了浏览器的默认换行规则
  • word-wrap: break-word, 保留浏览器的默认换行规则,一旦一个连续长单词一行容纳不下,就只对这个长单词进行打破换行