美文网首页鲁班小技巧
页面文字排版,深入了解white-space,word-brea

页面文字排版,深入了解white-space,word-brea

作者: 银魂飞雪 | 来源:发表于2018-11-12 15:26 被阅读276次

    先从white-space谈起,white-space顾名思议,控制“空白空间”。为了看清区别,我们设置一段源文本,包含三行文本(非br换行),每一行可能包含连续多个空格。如下图

    源文本

    再将white-space设置成不同的值,可以清楚地看到各个值之前的区别

    normal——     合并多个空格:;    源文本换行符换行:;自动换行:

    pre-line——    合并多个空格:;    源文本换行处换行:;自动换行:

    pre-wrap——  合并多个空格:;    源文本换行处换行:;自动换行:

    pre——           合并多个空格:;    源文本换行处换行:;自动换行:

    no-wrap——   合并多个空格:;    源文本换行处换行:;自动换行:

    white-space

    但是,如果某个单词很长,white-space是否会自动换行呢?我们试一下,在preWrap的文本中加一个无空格的长单词,很遗憾,长单词并没有自动换行。

    因此,可以明确:white-space只对空白相关的显示进行处理,white-space的自动换行,也只会在空白中进行自动换行。

    但是,对于长单词,怎么处理?

    看下一个属性,word-break,同样顾名思义,word-break是处理单词换行的属性。把所有属性列出来看看区别

    以下都先设置了white-space:pre-wrap

    break-word——换单词换行,尽量不截断单词本身;对于当前行显示不全的单词,先换到一个新行,如果还是显示不全,则按字符换行。

    break-all——   换字符换行。优点是看上去左右都对齐,缺点是行末的单词会被截断,影响阅读。

    keep-all——    单词不换行。超出的就显示到元素外

    normal——      看上去和keep-all一样。

    新的问题来了,normal和keep-all到底有没有区别?我们加上汉字试试

    看出区别了吗? 

    normal——对于汉字(严格来说是Chinese/Japanese/Korean (CJK))会换字符自动换行

    keep-all——对CJK文字,也只按空白和符号换行。

    所以,如果我们希望文字显示达到如下条件

    1、空格,换行尽量和原文一致

    2、确实超出的自动换行

    3、尽量不影响阅读(按单词换行)

    需要设置的CSS为

    white-space: pre-wrap;

    word-break: break-word;

    效果如下

    最后,关于word-wrap,其实wror-wrap只是早期浏览器的word-break不完善时,对word-break的补充

    word-wrap具有可选值为:break-word, normal。效果和word-break对应的值效果一样。

    相关文章

      网友评论

        本文标题:页面文字排版,深入了解white-space,word-brea

        本文链接:https://www.haomeiwen.com/subject/gyccfqtx.html