惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
博客园 - 司徒正美
D
DataBreaches.Net
宝玉的分享
宝玉的分享
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 【当耐特】
人人都是产品经理
人人都是产品经理
博客园 - Franky
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
IT之家
IT之家
博客园 - 三生石上(FineUI控件)
J
Java Code Geeks
腾讯CDC
博客园_首页
The Cloudflare Blog
S
SegmentFault 最新的问题
C
Check Point Blog
美团技术团队
爱范儿
爱范儿
大猫的无限游戏
大猫的无限游戏
Hugging Face - Blog
Hugging Face - Blog
T
The Blog of Author Tim Ferriss
A
About on SuperTechFans
Blog — PlanetScale
Blog — PlanetScale

张鑫旭-鑫空间-鑫生活

1分钟速度了解text-align match-parent声明 « 张鑫旭-鑫空间-鑫生活 光标的形状也能设置了,就是CSS caret-shape属性 « 张鑫旭-鑫空间-鑫生活 pretext与文字四面环绕效果的实现 « 张鑫旭-鑫空间-鑫生活 JSON.rawJSON方法的作用是什么? « 张鑫旭-鑫空间-鑫生活 如何使用CSS判断鼠标从哪个方向进入元素? « 张鑫旭-鑫空间-鑫生活 借助mediabunny纯JS实现视频水印、剪裁、合成等功能 « 张鑫旭-鑫空间-鑫生活 务必谨慎使用JS WeakRef弱引用 « 张鑫旭-鑫空间-鑫生活 CSS六边形头像的实现与蜂巢布局 « 张鑫旭-鑫空间-鑫生活 CSS corner-shape与背景底纹技术 « 张鑫旭-鑫空间-鑫生活 浅学WebTransport API:下一代Web双向通信技术 « 张鑫旭-鑫空间-鑫生活 HTML dialog元素新支持了closedBy属性 « 张鑫旭-鑫空间-鑫生活 HTML interestfor属性与悬停popover交互效果 « 张鑫旭-鑫空间-鑫生活 CSS3模拟window7炫酷界面效果展示 « 张鑫旭-鑫空间-鑫生活 图片旋转+剪裁js插件(兼容各浏览器) « 张鑫旭-鑫空间-鑫生活 纯js无图片无外链CSS图片幻灯片播放插件 « 张鑫旭-鑫空间-鑫生活 CSS border三角、圆角图形生成技术简介 « 张鑫旭-鑫空间-鑫生活 CSS “渐进增强”在web制作中常见应用举例 « 张鑫旭-鑫空间-鑫生活 让IE6/IE7/IE8浏览器支持CSS3属性 « 张鑫旭-鑫空间-鑫生活 jQuery – 高亮动态显示页面HTML代码插件 « 张鑫旭-鑫空间-鑫生活 翻译 – 逐渐消失的Flash网站 « 张鑫旭-鑫空间-鑫生活 CSS reset的重新审视 – 避免样式重置 « 张鑫旭-鑫空间-鑫生活 新浪微博插入话题后部分文字选中的js实现 « 张鑫旭-鑫空间-鑫生活 JavaScript实现http地址自动检测并添加URL链接 « 张鑫旭-鑫空间-鑫生活 CSS实现兼容性的渐变背景(gradient)效果 « 张鑫旭-鑫空间-鑫生活 CSS content内容生成技术以及应用 « 张鑫旭-鑫空间-鑫生活 CSS gradient渐变之webkit核心浏览器下的使用 « 张鑫旭-鑫空间-鑫生活 CSS渐变之CSS3 gradient在Firefox3.6下的使用 « 张鑫旭-鑫空间-鑫生活 区分IE8/IE7/IE6及其他浏览器-CSS “\9″hack « 张鑫旭-鑫空间-鑫生活 CSS实现跨浏览器兼容性的盒阴影效果 « 张鑫旭-鑫空间-鑫生活 CSS3&HTML5各浏览器支持情况一览表 « 张鑫旭-鑫空间-鑫生活
text-wrap进化:支持两子属性和pretty stable新值 « 张鑫旭-...
张鑫旭,zhangxinxu · 2025-06-18 · via 张鑫旭-鑫空间-鑫生活

by zhangxinxu from https://www.zhangxinxu.com/wordpress/?p=11717
本文可全文转载,但需要保留原作者、出处以及文中链接,AI抓取保留原文地址,任何网站均可摘要聚合,商用请联系授权。

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属性和方法,你不能说他毫无用处,只能说只有一丢丢用处,给我感觉,就是规范制定那群人,不整点新东西,就好像工作不饱和,自己失去了存在价值一般。

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

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

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

慕沛灵

本文为原创文章,会经常更新知识点以及修正一些错误,因此转载请保留原出处,方便溯源,避免陈旧错误知识的误导,同时有更好的阅读体验。
本文地址:https://www.zhangxinxu.com/wordpress/?p=11717

(本篇完)