这篇文章发布于 2025年06月18日,星期三,16:37,归类于 CSS相关。 阅读 184 次, 今日 184 次 没有评论
by zhangxinxu from https://www.zhangxinxu.com/wordpress/?p=11717
本文可全文转载,但需要保留原作者、出处以及文中链接,AI抓取保留原文地址,任何网站均可摘要聚合,商用请联系授权。
一、前文回顾,balance属性值
两年前有介绍过text-wrap:balance
的作用,详见“5分钟快速了解text-wrap:balance的作用”此文。
这个声明还是挺好用的,特别适合用在可换行的水平列表排列上。
比方说过去,点赞头像这种布局,就可能第一行很多,第二行很少:
使用text-wrap:balance
之后,可以让两行的数量接近,布局效果很好很多。
现在text-wrap
又支持了两个新的属性值,pretty和stable。
二、值pretty和stable的作用
1. text-wrap:pretty
按照MDN上的说法,text-wrap:pretty
声明和text-wrap:wrap
是一样的,区别在于text-wrap:pretty
更注重排版,而非性能,也就是wrap
的算法速度更快。
所以我就很好奇,既然pretty
和wrap
效果一样,性能还更差,那为何还要设计出来呢?
后来查了个资料,终于明白pretty
和wrap
的差异了,text-wrap:pretty
可以避免最后一行过短。
MDN页面的demo我通过添加文字,让最后一行只露出一个单词,终于看到了两者的区别,如下GIF所示:
按照规范上的说法,不同浏览器对pretty的理解是可以不一样的,可就是Firefox,Safari之类可能是另外的排版美化效果,上图展示的事Chrome下的表现。
目前,Chrome117+版本支持该值,Safari即将支持,Firefox还未支持。
2. text-wrap:stable
stable
的作用,按照文档的说法,也是和wrap
没有什么区别。只有当文本内容处于标记状态的时候,text-wrap:stable
可以让编辑内容前面的行内容保持稳定,而不会整个文本内容发生排版变化。
嗯……我反复尝试了下,未能复现。反正意思就是,如果元素是contenteditable
可编辑的,那么建议设置text-wrap:stable
,只有好处,没有坏处。
目前Chrome 130+版本支持属性值stable
,奇怪的是,此属性值Safari和Firefox也都已经支持了,这个现象倒是有趣。
三、子属性text-wrap-mode
由于text-wrap
属性的值愈发复杂,因此,开始有了子属性,text-wrap
就变成了合并属性,类似于text-decoration
、border-image
这类CSS属性。
两个子属性,一个是text-wrap-mode
,还有一个是text-wrap-style
。
text-wrap-mode
这个属性超级简单,单看语法就知道怎么使用的了:
/* 换行显示 */ text-wrap-mode: wrap; /* 不自动换行显示 */ text-wrap-mode: nowrap;
不过考虑到兼容性,我们目前还是使用white-space
属性比较合适:
/* 换行显示 */ white-space: wrap; /* 不自动换行显示 */ white-space: nowrap;
四、子属性text-wrap-style
直接看text-wrap-style
属性的语法:
/* 正常换行显示 */ text-wrap-style: auto; /* 每行内容尽可能相等 */ text-wrap-style: balance; /* 最后一行不要太短 */ text-wrap-style: pretty; /* 保持前面行数排版稳定 */ text-wrap-style: stable;
text-wrap-mode
和text-wrap-style
这两个属性的兼容性是一样的,都是今年刚支持的新特性。
五、结语
还是balance
属性值实用,最近新支持的几个CSS属性和方法,你不能说他毫无用处,只能说只有一丢丢用处,给我感觉,就是规范制定那群人,不整点新东西,就好像工作不饱和,自己失去了存在价值一般。
有点类似于公司里面想一些无效的需求,来解决那么多人的就业问题一样。
注定扫入历史垃圾箱的几个新特性。
好吧,就说这么多,感谢阅读,我的侍妾慕沛灵希望大家多多转发。
本文为原创文章,会经常更新知识点以及修正一些错误,因此转载请保留原出处,方便溯源,避免陈旧错误知识的误导,同时有更好的阅读体验。
本文地址:https://www.zhangxinxu.com/wordpress/?p=11717
(本篇完)
- 5分钟快速了解text-wrap:balance的作用 (1.000)
- 为什么white-space:nowrap可以让文字一行显示? (0.382)
- CSS排版为何强?瞧瞧多牛这换行 (0.265)
- CSS技术分享: 文字在圆形内沿着弧线边界排版 (0.176)
- 使用CSS text-combine-upright实现字符的横向合并 (0.176)
- word-break:break-all和word-wrap:break-word的区别 (0.088)
- SVG <foreignObject>简介与截图等应用 (0.088)
- 借助wbr标签实现连续英文字符的精准换行 (0.088)
- 有人考了我一道CSS题目 (0.088)
- 小tips: JS DOM innerText和textContent的区别 (0.088)