专栏名称: 前端早读课
我们关注前端,产品体验设计,更关注前端同行的成长。 每天清晨五点早读,四万+同行相伴成长。
目录
相关文章推荐
龙视新闻联播  ·  清凉在龙江丨四季皆可游 昼夜都精彩 ·  5 小时前  
龙视新闻联播  ·  清凉在龙江丨四季皆可游 昼夜都精彩 ·  5 小时前  
行乐  ·  反向旅游赢家!日本小众避暑地 ·  昨天  
行乐  ·  反向旅游赢家!日本小众避暑地 ·  昨天  
前端早读课  ·  【第3530期】像高手一样调试程序 ·  昨天  
前端大全  ·  GitHub 第 10 ... ·  2 天前  
前端大全  ·  Tauri vs. ... ·  2 天前  
51好读  ›  专栏  ›  前端早读课

【第3489期】使用 text-wrap: pretty 提升网页排版品质

前端早读课  · 公众号  · 前端  · 2025-04-14 08:00

正文

请到「今天看啥」查看全文


其实,CSS 工作组设计 pretty 的初衷,是希望每个浏览器都尽其所能地改进文本换行方式。在 CSS Text Level 4 的规范中,它是这样定义的(其中 “user agent” 是指浏览器,重点部分已加粗):

浏览器可以(但不限于)尝试避免段落末尾出现过短的行…… 同时也应该在其他方面改进排版。具体的改进方式由各个浏览器自行决定,可能包括:减少各行长度的变化幅度、避免排版河流、优先考虑不同类型的软换行点、断字点或对齐机会,避免连续多行都使用断字。

这里使用的 “may”(可以) 这个词非常重要,它明确表示每个浏览器可以自主决定 pretty 的具体实现方式,并没有强制要求所有浏览器做出相同的选择。实际上,一个浏览器团队可能在 2025 年对某些排版特性做出支持,未来又会改变其实现方式。

由于 Chrome 的实现方式让很多开发者产生误解,大家以为 pretty 的作用只是防止段落结尾出现短行。但这其实并不是它的本意。事实上,CSS 工作组已经为这种特定需求定义了另一个属性值,它在上周刚被正式命名为 text-wrap: avoid-short-last-lines

实际试试看

你现在就可以在 Safari Technology Preview 216 中试用 text-wrap: pretty 。可以查看这个演示,切换 pretty 的开启与关闭状态,观察它带来的效果。你还可以开启或关闭断字、对齐等功能,尝试各种组合方式。开启辅助线或 “幽灵显示” 功能,有助于你理解背后的排版变化。也可以试试 text-wrap: balance ,看看两者的区别。这个演示还提供了英文、阿拉伯文、德文、中文和日文内容,让你能观察 pretty 在不同文字系统下的表现。

试试在 Safari Technology Preview 216 中体验这个演示。
https://codepen.io/jensimmons/pen/xxvoqNM?editors=1100

以下是一个英文文本示例,未使用 text-wrap ,也就是网页多年来使用的默认换行算法。我打开了 “显示辅助线(show guides)” 选项,用来标记文本框的边缘。绿色的垂直线标记了文本框的 inline-end 边界 —— 浏览器的排版算法会尽量让每一行都延伸到这个绿色线的位置。当文本达到这个边界时,浏览器就会换行。

三段文本,绿色的垂直线标记了文本框的右侧边缘。

接下来是同样的文本,但这次应用了 text-wrap: pretty 。你会发现绿色的边界线移动了。现在,浏览器的换行目标不再是文本框的最大宽度,而是提前一些换行,大约在一个范围之间换行,一定在洋红色线之后,也一定在红色线之前。这样可以改善文本边缘的参差不齐现象(rag)。

同样的文本示例,边缘更加整齐。辅助线显示有三条垂直线,间距大约 50 像素 —— 最右侧是红色线,左边 45 像素是绿色线,再往左 45 像素是洋红色线。

你还可以开启 “显示幽灵(show ghosts)”,查看优化前的版本作为背景对比。

同样的文本,排版更整齐的版本用正常颜色显示,旧版本(排版较差)用淡青色作为背景叠在后面,形成一个 “幽灵” 效果,让你清楚看到哪些行发生了变化,以及如何变化的。

此外,你还可以开启或关闭断字(hyphenation)和对齐(justification)功能,试试不同组合的效果。改变浏览器窗口的宽度,观察文字在不同宽度下的排版表现。

你可能会注意到,Safari Technology Preview 是对整段文本的每一行都应用 pretty ,而不是像其他浏览器那样只优化最后几行。因此,它对文本的整体影响更明显,整块文字呈现出一种更为 “整齐的矩形块” 效果。

你真的得自己试着给正文文本加上 text-wrap: pretty ,才能感受到它带来的巨大差异。它的效果虽然不夸张,但却很惊艳。如果你再配合使用段落间距为 1lh ,排版看起来会非常棒。

那么,为什么不是每个浏览器都全力优化排版呢?原因就是性能问题。

性能表现

许多开发者会担心 text-wrap: pretty 对性能的影响。虽然更好的排版视觉体验非常重要,但也不能以牺牲网页加载速度为代价。各浏览器团队在设定优化范围时,必须考虑用户所使用的设备性能和芯片能力。

我们对 Safari 所做的优化感到非常满意 —— 即使网页开发者在页面上大量使用 text-wrap: pretty







请到「今天看啥」查看全文