溢出策略需按内容类型分别指定
别名: 按类型溢出 · overflow by content type · 分型裁切
概念解释
槽位装不下时怎么处理,不能写成一条全场通用的「超出省略」。按类型溢出(content-typed overflow)要求交付为每类内容单独指定损失方式:人名、金额、标识符、时间、地址、图片裁切,各自允许丢掉什么、必须保住什么。把所有溢出都交给同一套省略号,等于把损失函数交给实现者猜。
它不替代「把长短两端画出来」——两端说明空间有没有被想过;类型策略说明空间不够时哪一部分可以死。两者同时缺席时,实现会复制按钮上的尾部省略号到价格上。
机制
溢出是有方向的信息损失。人名丢掉姓或丢掉名,识别代价不同,有的书写系统还不允许在词中切开。金额一旦省略中间位,数值本身被伪造;金额更常应改行、改字号或切到完整只读层,而不是变成 1,23...。标识符(订单号、哈希)中间往往比两端更可丢,于是中间省略或等宽滚动比尾部裁切更保真。URL 的可识别部分在主机名,时间的可识别部分在时区冲突时的偏移。图片溢出是构图裁切,不是字符策略。
类型还决定失败是否可逆。文本省略若没有「展开看全文」的入口,损失是永久的;金额若不能点进完整数字,损失是一次错误决策。交付不按类型分别写,工程层只会看到一个 text-overflow,于是所有槽位继承同一条 CSS。同一属性对标题无害,对价格是事故。
边界
装饰性英雄图的裁切是构图决定,不属于数据溢出,不要用字段策略去管。整表横向滚动时,损失发生在视口,不在单元格内部,策略应写在表这一级(冻结列、滚动提示),而不是给每个单元格再套省略号。内容类型本身就以截断为完整形态时(校验和只展示前后各四位),那不是溢出补救,是该类型的常规写法,应标成「本就不全」,以免实现再叠一层省略号。只在一种语言、一种字体下测过的策略,换到平均字宽不同的字体上会失效,策略必须绑到渲染宽度而不是字符个数。
怎么落地
- 给交付包里的每个数据槽标注内容类型,并写死该类型的溢出动作:换行、尾部省略、中间省略、改字号、改行数上限、横向滚动、进入详情看全文,七者只许选其明确的子集。
- 为金额、库存、权限名这类高后果类型禁止尾部省略;若空间不够,改为换行或跳转到完整只读视图。
- 为标识符指定等宽和中间省略(或可复制的悬停全文),不要沿用标题的尾部省略。
- 在测试数据里对每个类型各造一条必定溢出的记录,打开实现后的界面:价格不得出现省略号,订单号不得只切掉末尾而留下易混淆的前缀。任何类型套用了另一种类型的动作,就把该槽的策略补进交付。