css white-space属性详解

a 夏天 提交于 2019-12-02 16:30:26

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>

效果如下:

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>

效果如下:

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

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>

效果如下:

效果很明显,源码中的换行在显示中也换行了,源码中的多个空格也保留了。并且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>

效果如下:

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>

效果如下:

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

white-space属性表

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


white-space兼容性

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

原创文章,转载请注明来自:妹纸前端-www.webfront-js.com.
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!