css文本换行行为

403 阅读2分钟

默认换行行为

前提:固定宽度的盒子

中文会自动换行 ,英文数字遇空格换行 如下图:

CSS 为我们提供了一些和文本换行相关的属性;

  • overflow-wrap
  • word-break
  • white-space
  • line-break
  • hyphens

一、overflow-wrap

作用:告诉浏览器,内容超出容器边界时是否允许换行。其属性值主要有以下三种:

overflow-wrap: normal | break-word | anywhere

1、normal

允许内容顶开或溢出指定的容器边界,遇空格换行。

2、break-word anywhere

当宽度设置为固定的值,两者表现是一致的。如果在这一行剩余位置显示单词,会导致溢出时,浏览器会中断该单词

区别:当 width:min-content; 时

(min-contetn:如果不给元素一个具体的height,它就会自动适应内容的高度。假如我们希望width也具有同样的类似行为, 可以用这个属性)

二、word-break

作用:用于指定怎样在单词内进行断行

word-break:normal | break-all | keep-all

三、white-space

作用:用来设置如何处理元素中的空白

white-space: normal | nowrap | pre | pre-wrap | pre-line

  • nowrap:不换行,常用来实现超出…的效果
  • pre: 保留所有的空格和回车,且不允许折行。

浏览器会自动压缩空格,文字的前后空格都会忽略,内部连续空格只有自作一个

如图:

如果不自动压缩空格,那我们写html的时候就只能写成1行了,否则先这样的代码就会出现大段的空白。

<div>
<span>
</span>
</div>
  • pre-wrap: 保留所有的空格和回车,但是允许折行。
  • pre-line: 会合并空格,且允许折行

四、line-break

作用:来处理如何断开带有标点符号的中文、日文或韩文文本的行。简而言之,该属性可以用来处理过长的标点符号

总结

浏览器默认是以单词为单位进行换行的,单词不可拆分,挤不下会另起一行;一个汉字为一个单词;连续的字母或数字看做一个单词

附加符号

作用:添加在字母上面的符号,以更改字母的发音或者以区分拼写相似词语。

例如汉语拼音字母“ü”上面的两个小点,或“á”、“à”字母上面的标调符。变音符号可以放在字母的上方或下方,也可以放在其他的位置。当多个附加符号叠加的时候,就形成了看起来像乱码的符号。

参考

segmentfault.com/a/119000000…