text-wrap进化:支持两子属性和pretty stable新值

这篇文章发布于 2025年06月18日,星期三,16:37,归类于 CSS相关。 阅读 184 次, 今日 184 次 没有评论

 

text-wrap封面图

一、前文回顾,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的算法速度更快。

所以我就很好奇,既然prettywrap效果一样,性能还更差,那为何还要设计出来呢?

后来查了个资料,终于明白prettywrap的差异了,text-wrap:pretty可以避免最后一行过短。

MDN页面的demo我通过添加文字,让最后一行只露出一个单词,终于看到了两者的区别,如下GIF所示:

排版区别GIF

按照规范上的说法,不同浏览器对pretty的理解是可以不一样的,可就是Firefox,Safari之类可能是另外的排版美化效果,上图展示的事Chrome下的表现。

目前,Chrome117+版本支持该值,Safari即将支持,Firefox还未支持。

text-wrap pretty兼容性

2. text-wrap:stable

stable的作用,按照文档的说法,也是和wrap没有什么区别。只有当文本内容处于标记状态的时候,text-wrap:stable可以让编辑内容前面的行内容保持稳定,而不会整个文本内容发生排版变化。

嗯……我反复尝试了下,未能复现。反正意思就是,如果元素是contenteditable可编辑的,那么建议设置text-wrap:stable,只有好处,没有坏处。

目前Chrome 130+版本支持属性值stable,奇怪的是,此属性值Safari和Firefox也都已经支持了,这个现象倒是有趣。

stable的兼容性

三、子属性text-wrap-mode

由于text-wrap属性的值愈发复杂,因此,开始有了子属性,text-wrap就变成了合并属性,类似于text-decorationborder-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-modetext-wrap-style这两个属性的兼容性是一样的,都是今年刚支持的新特性。

text-wrap子属性兼容性

五、结语

还是balance属性值实用,最近新支持的几个CSS属性和方法,你不能说他毫无用处,只能说只有一丢丢用处,给我感觉,就是规范制定那群人,不整点新东西,就好像工作不饱和,自己失去了存在价值一般。

有点类似于公司里面想一些无效的需求,来解决那么多人的就业问题一样。

注定扫入历史垃圾箱的几个新特性。

好吧,就说这么多,感谢阅读,我的侍妾慕沛灵希望大家多多转发。

慕沛灵

(本篇完)

分享到:


发表评论(目前没有评论)