定义和用法

white-space 属性设置如何处理元素内的空白。
这个属性声明建立布局过程中如何处理元素中的空白符。值 pre-wrap 和 pre-line 是 CSS 2.1 中新增的。

说明
默认值 normal
继承性 yes
版本 CSS1
JavaScript 语法 object.style.whiteSpace=”pre”
浏览器支持 所有浏览器都支持 white-space 属性,任何的版本的 Internet Explorer (包括 IE8)都不支持属性值 “inherit”

可能的值

含义
normal 默认。空白会被浏览器忽略
pre 空白会被浏览器保留。其行为方式类似 HTML 中的 <pre> 标签
nowrap 文本不会换行,文本会在在同一行上继续,直到遇到<br> 标签为止
pre-wrap 保留空白符序列,但是正常地进行换行
pre-line 合并空白符序列,但是保留换行符
inherit 规定应该从父元素继承 white-space 属性的值

可能使用场景

单行省略号,使用其不换行属性值

使用text-overflow:ellipsis对溢出文本显示省略号有两个好处,一是不用通过程序限定字数;二是有利于SEO。需要使用对对溢出文本显示省略号的通常是文章标题列表,这样处理对搜索引擎更友好,因为标题实际上并未被截字,而是局限于宽度而未被显示而已。
通常的做法是这样的:

  1. .text-overflow{
  2. overflow:hidden;
  3. text-overflow:ellipsis;
  4. -o-text-overflow:ellipsis;
  5. white-space:nowrap;
  6. width:100%;
  7. }

其中,overflow: hidden和white-space: nowrap都是必须的否则不会显示省略号;-o-text-overflow: ellipsis针对Opera;而宽度的设定主要是针对IE6;
该方法支持Internet Explorer, Safari, Chrome 和 Opera,但FF并不支持,不过可以通过Jquery来实现类似的效果。

  1. -moz-box-flex:2.0; /* Firefox */
  2. -webkit-box-flex:2.0; /* Safari 和 Chrome */ 浏览器支持的可伸缩元素

保留空白以及换行

white-space:break-spaces
**
在我们编辑富文本时,经常会用到复合文本编辑器,但有些情况下,我们不想编辑太复杂,或者说要保证其显示效果的相对简单,便会使用textarea多行文本框处理这个需求,然后在以前的方案中会使用正则将其进行符号替换,但这样的正则方案多少也是有匹配问题的,使用这个样式方案就不会有类似的问题。使用textarea保存的内容,用普通的div也能合理的显示出。

小结:带换行和空格格式的文本可以考虑使用css white-space:break-spaces 来保留原来的基本排版。

参考资料