css white-space属性详解
2017-01-25 01:08

white-space空格处理

css white-space这个css样式,用来设置element元素对内容中的空格的处理方式,有着几个可选值:normal,nowrap,pre,pre-wrap,pre-line。没有设置white-space属性,则默认为white-space:normal。

normal表示合并空格,多个相邻空格合并成一个空格,在源码中的换行作为空格处理,只会根据容器的大小进行自动换行。

这里的空白是值空白字符,包括空格,制表符等空白字符,下面为了行文方便,统一用“空格”代表。


white-space:nowrap不换行

white-space:nowrap和normal一样,也合并空格,但是不会根据容器大小换行,表示不换行。

.wscont{
    margin:12px;
    padding:12px;
    width:300px;
    background:#f1f1f1;
    border:1px solid #bababa;
    line-height:32px;
    font-size: 15px;
    font-family: "微软雅黑";
    white-space:nowrap;
}

<div class="wscont">
    妹纸前端测试white-space属性,
    white-space属性的keywrod值。
</div>

效果如下:

nowrap.png

white-space:nowrap会导致文本不换行,经常和overflow,text-overflow一起使用,如下:

.wscont{
    margin:12px;
    padding:12px;
    width:300px;
    background:#f1f1f1;
    border:1px solid #bababa;
    line-height:32px;
    font-size: 15px;
    font-family: "微软雅黑";
    white-space:nowrap;
    overflow:hidden;
    text-overflow: ellipsis;
}

<div class="wscont">
    妹纸前端测试white-space属性,
    white-space属性的keywrod值。
</div>

效果如下:

nowrap2.png

这个效果在页面布局中使用很频繁,尤其在移动端布局中。

white-space:pre保留空格不换行

white-space:pre的作用是保持源码中的空格,有几个空格算几个空格显示,同时换行只认源码中的换行和<br/>标签。

.wscont{
    margin:12px;
    padding:12px;
    background:#f1f1f1;
    border:1px solid #bababa;
    line-height:32px;
    font-size: 15px;
    font-family: "微软雅黑";
    white-space:pre;
}

<div class="wscont">
        妹纸前端测试white-space属性,我们都是好朋友,春天到了,交配的季节又到了。
    white-space属性的keywrod值。<br/>妹纸的学习园地,妹纸的前端乐园。
</div>

效果如下:

nowrap3.png

效果很明显,源码中的换行在显示中也换行了,源码中的多个空格也保留了。并且pre在没有碰到源码换行和<br/>的时候是不换行了,不会去自适应容器换行。

white-space:pre-wrap保留空格换行

white-space:pre-wrap的作用是保留空格,并且除了碰到源码中的换行和<br/>会换行外,还会自适应容器的边界进行换行。

.wscont{
    margin:12px;
    padding:12px;
    width:400px;
    background:#f1f1f1;
    border:1px solid #bababa;
    line-height:32px;
    font-size: 15px;
    font-family: "微软雅黑";
    white-space:pre-wrap;
}

<div class="wscont">
        妹纸前端测试white-space属性,我们都是好朋友,春天到了,交配的季节又到了。
    white-space属性的keywrod值。<br/>妹纸的学习园地,妹纸的前端乐园。
</div>

效果如下:

nowrap4.png

white-space:pre-wrap和white-space:pre的区别就是会自适应容器的边界进行换行。

white-space:pre-line合并空格换行

white-space:pre-line的作用是合并空格,换行和white-space:pre-wrap一样,遇到源码中的换行和<br/>会换行,碰到容器的边界也会换行。

.wscont{
    margin:12px;
    padding:12px;
    width:400px;
    background:#f1f1f1;
    border:1px solid #bababa;
    line-height:32px;
    font-size: 15px;
    font-family: "微软雅黑";
    white-space:pre-line;
}

<div class="wscont">
        妹纸前端测试white-space属性,我们都是好朋友,春天到了,交配的季节又到了。
    white-space属性的keywrod值。<br/>妹纸的学习园地,妹纸的前端乐园。
</div>

效果如下:

nowrap5.png

white-space:pre-line会保留源码中的换行,但是不会保留源码中的空格。

white-space属性表

white-space属性
源码空格源码换行<br>换行容器边界换行
normal合并忽略换行换行
nowrap合并忽略换行不换行
pre保留换行换行不换行
pre-wrap保留换行换行换行
pre-line合并换行换行换行


white-space兼容性

nowrapcompat.png

我们现在写前端页面大部分只用考虑兼容到IE8就可以,所以从这里说,pre-wrap,pre-line都是可以使用的。兼容性的最后一行表示这些css属性同样可以用到textarea元素中,当然要去除<br/>标签的作用,textarea会把它原样显示的。

原创文章,转载请注明来自:妹纸前端-www.webfront-js.com.
阅读(8081)
辛苦了,打赏喝个咖啡
微信
支付宝
妹纸前端
妹纸前端工作室 | 文章不断更新中
京ICP备16005385号-1