几个关于换行的属性

隐身守侯 提交于 2019-12-02 16:15:46

参考

text-overflow

text-overflow 属性规定当文本溢出包含元素时发生的事情。

取值:

  • clip(默认值):修建文本
  • ellipsis:显示省略符号来代表被修剪的文本。
  • string:使用给定的字符串来代表被修剪的文本

想要实现溢出时产生省略号的效果。还必须定义:

强制文本在一行内显示(white-space:nowrap)及溢出内容为隐藏(overflow:hidden)。

white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;

white-space

white-space 属性设置如何处理元素内的空白

取值:

  • normal(默认):空白会被浏览器忽略

    (多个连续的空格被合并成一个,回车被忽略,如果句子太长,会在空白处换行)

  • nowrap:文本不会换行,文本会在在同一行上继续,直到遇到
    标签为止。

    连续空格被合并,回车被忽略,句子再长也不换行

  • pre:空白会被浏览器保留

    空格不会被合并,回车数量对应换行数(同

    标签),句子太长不会换行

  • pre-wrap 保留空白符序列,但是正常地进行换行

    空格不会被合并,回车对应数量换行,句子过长会换行

  • pre-line 合并空白符序列,但是保留换行符

    多个空格会被合并,回车对应数目换行,句子过长会换行

  • inherit 规定应该从父元素继承 white-space 属性的值

white-space用于控制:

  • 空格是否合并
  • 回车是否解释成折行
  • 句子太长是否在有空格处折行

    pre 和 pre标签中的prev都是 preserve (保留)的缩写。

于是我们可以这么理解:

  • pre : 保留(preserve)所有的空格和回车,且 不 允许折行。(把折行也看成是一种非preserve)
  • pre-wrap : 保留(preserve)所有的空格和回车,但是允许折行(wrap)。
  • pre-line : 仅仅保留(preserve)回车(line),会合并空格,且允许折行

pre标签正是默认有如下CSS的元素:

pre {
    display: block;
    white-space: pre;
}

word-break

word-break 属性规定自动换行的处理方法。

取值:

  • normal:使用浏览器默认的换行规则。
  • break-word:允许在单词内换行
  • keep-all:只能在半角空格或连字符处换行

word-wrap

word-wrap 属性允许长单词或 URL 地址换行到下一行。

取值:

  • normal:只在允许的断字点换行(浏览器保持默认处理)
  • break-word:在长单词或 URL 地址内部进行换行

word-wrap和word-break的区别在于:
- word-wrap:break-word会首先尝试挪到下一行,看看下一行的宽度够不够,不够的话就进行单词内的断句

这里写图片描述

  • word-break:break-word更粗暴,它不会尝试把长单词挪到下一行,而是直接进行单词内的断句

这里写图片描述

总结

  • white-space 是作用于空格和回车上的,是以句子为单位,不会对单词产生影响;
  • word-break和word-break都是作用在单词上的,用于控制超长单词的换行,二者的区别在于是否将单词首先尝试移动到下一行
  • text-overflow是对如果出现超长单词(也就是white-space为nowrap或者word-break为normal时)的处理方式

所以比较稳妥的断句方式就是:

//word-break和word-wrap都为默认值normal

//保证长句不换行
white-spacenowrap//用省略号处理超长的部分
overflow: hidden;
text-overflow: ellipsis;

而最粗暴的断句方式是:

white-space:normal;
break-word:break-all
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!