css white-space属性详解

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.
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值