overflow-wrap
当一个不可分割的字符串太长要溢出其行盒子时, 这个属性设置是否允许在字符串中换行
📕原本这个属性是一个非标准的微软私有属性叫 word-wrap
, 但是在 CSS3
中被重命名为 overflow-wrap
. word-wrap
现在被当作 overflow-wrap
的别名了
属性值有三个
normal
: 仅在正常的单词断点处中断, 比如连个单词之间空格anywhere
: 为了防止溢出, 可以在单词的任何位置断开, 并且不添加连字符.break-word
: 和anywhere
相同, 但是在计算min-content
时不考虑软换行机会, 而anywhere
在计算min-content
时考虑软换行.
.box {
border: 3px solid salmon;
width: min-content;
}
.box1 {
overflow-wrap: break-word;
}
.box2 {
overflow-wrap: anywhere;
}
<div class="box box1">Lorem isum, dolor sit</div>
<div class="box box2">Lorem isum, dolor sit</div>
<div class="box box1">你好,我是张三 很开心 见到你最近</div>
<div class="box box2">你好,我是张三 很开心 见到你最近</div>
从下图就可以看出, anywhere
在计算 min-content
时考虑软换行的意思就是每个中文、每个英文字母、每个标点符号能断就断, 而 break-word
没有考虑 min-content
和我们认知的计算规则比较相似, 而且像逗号(,
)这样的避首标点也没有出现在一行的开头.
再来看看 overflow-wrap: anywhere;
和 word-break: break-all
的区别吧
<div class="box box2">Lorem isum, dolor sit</div>
<div class="box box3">Lorem isum, dolor sit</div>
<div class="box box2">你好,我是张三 很开心 见到你最近</div>
<div class="box box3">你好,我是张三 很开心 见到你最近</div>
.box2 {
overflow-wrap: anywhere;
}
.box3 {
word-break: break-all;
}
从上图还是可以比较清楚地看出, 两者的不同是处理在标点符号左右的软换行. word-break: break-all
不会在表达符号左右的软换行处换行, 而 overflow-wrap: anywhere;
则会.
额外一点, overflow-wrap
生效的前提是浏览器允许换行, 如果使用 white-space
阻止了换行, 那么 overflow-wrap
也就不会生效
<div class="box box4">Lorem isum, dolor sit</div>
.box4 {
width: 100px;
white-space: pre;
overflow-wrap: anywhere;
}
谢谢你看到这里😊
本文含有隐藏内容,请 开通VIP 后查看