css文本换行解决方案

1.浏览器对文本换行的默认处理方式
  • 紧跟在文字后的�符号 不会出现在行首;遇到空格、短横都会导致换行;
  • 对数字和英文单词处理方式相近,不会截断。
  • P标签是默认是自动换行的
2.利用 '&nbsp';
  • '&nbsp'; 是一个连接符,保证前后字符连接在一起,统一换行用的。font-size只是为了隐藏这个空格 ,‘&zwj’; 是纯粹的连接符,本来应该用这个,在使用时发现,在前英文后中文的地方,该连接符失效了,于是选择用标签包着‘&nbsp’;来作为替代方案;
    另:标点符号换行问题需要处理,是因为字体加密,标点符号被替换成了其他码区,只是显示得像个标点符号,所以浏览器对标点的换行处理,都需要数据添加连接符来解决
<nsbp>&nbsp;</nbsp>
nbsp{
font-size:0;
}
3.CSS自动换行、强制不换行、强制断行、超出显示省略号:
  • 自动换行
    p { word-wrap:break-word; }
  • 强制不换行
    p { white-space:nowrap; }
  • 强制英文单词断行
p { word-break:break-all; }
//注意:设置强制将英文单词断行,需要将行内元素设置为块级元素。
  • 超出显示省略号
    p{text-overflow:ellipsis;overflow:hidden;}
4.换行属性概念详解
  • white-space 属性设置如何处理元素内的空白
    white-space: normal|pre|nowrap|pre-wrap|pre-line|inherit;
    normal 默认。空白会被浏览器忽略。
    pre 空白会被浏览器保留。其行为方式类似 HTML 中的 pre 标签。
    nowrap 文本不会换行,文本会在在同一行上继续,直到遇到 br 标签为止。
    pre-wrap 保留空白符序列,但是正常地进行换行。
    pre-line 合并空白符序列,但是保留换行符。
    inherit 规定应该从父元素继承 white-space 属性的值。

  • word-wrap 属性用来标明是否允许浏览器在单词内进行断句,这是为了防止当一个字符串太长而找不到它的自然断句点时产生溢出现象。
    word-wrap: normal|break-word;
    normal: 只在允许的断字点换行(浏览器保持默认处理)
    break-word:在长单词或URL地址内部进行换行, 首先会尝试挪到下一行,看看下一行的宽度够不够,
    不够的话就进行单词内的断句

  • word-break 属性用来标明怎么样进行单词内的断句。
    word-break: normal|break-all|keep-all;
    normal:使用浏览器默认的换行规则。
    break-all:允许再单词内换行,不会把长单词挪到下一行,而是直接进行单词内的断句
    keep-all:只能在半角空格或连字符处换行

5.参考查询
* 字体度量、line-height 和 vertical-align
* html 空格字符实体
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。