CSS设置一行内文字超过宽度不换行

当一行文字超过DIV或者Table的宽度的时候,浏览器中默认是让它换行显示的,如果我们不想让他换行显示那要怎么办呢?看到这个标题很容易就会想到截断文字加“...”的做法。
一般的文字截断(适用于内联与块):

==============CSS================
.text-overflow{
display:block;/*内联对象需加*/
width:31em;
word-break:keep-all;/* 不换行 */
white-space:nowrap;/* 不换行 */
overflow:hidden;/* 内容超出宽度时隐藏超出部分的内容 */
text-overflow:ellipsis;/* 当对象内文本溢出时显示省略标记(...) ;需与overflow:hidden;一起使用。*/
}
=================================

对于表格的话,定义有一点不一样:

==============CSS================
table{
width:30em;
table-layout:fixed;/* 只有定义了表格的布局算法为fixed,下面td的定义才能起作用。 */
}
td{
width:100%;
word-break:keep-all;/* 不换行 */
white-space:nowrap;/* 不换行 */
overflow:hidden;/* 内容超出宽度时隐藏超出部分的内容 */
text-overflow:ellipsis;/* 当对象内文本溢出时显示省略标记(...) ;需与overflow:hidden;一起使用。*/
}
=================================

注:这个东东只对单行的文字的效,如果你想把它用在多行上,也只有第一行有作用的。 这个写法只有IE会有“...”,其它的浏览器文本超出指定宽度时会隐藏。

自己体会:什么时候需要使用文字不换行?理论上来说,纯英文字母在一个block容器内排列是不会根据容器宽度换行的,它会一直把容器撑大。汉字在没有特殊定义的情况下是会自动换行的,这本身是一个优点,省了我们很多麻烦,但是也有不好的时候,如下图:

 

CSS设置一行内文字超过宽度不换行

在线用户的名字回行了

我们这时是不需要文字会行的,所以给这个文字容器加入white-space:nowrap;属性,使它自动被顶到下一行。