E1.15.2fixed-width button overflow设计研究
定宽按钮里过长的文案会被截断或换行
别名: 按钮截断 · 按钮换行 · fixed width overflow
概念解释
把按钮写成固定像素宽,文案却随语言和对象变长时,多出来的字只有两条路:截断或换行。截断吃掉词尾,两枚键可能变成看不出差别的「删除此… / 删除所…」。换行把一枚键变成两行矮块,邻行被顶走,或主按钮突然变高。定宽是在和不可控的字符串长度打赌,输了就在布局层毁掉明确性。
机制
定宽把字符串当成不会变的贴图。真实字符串会变:插值(删除 12 项)、语法(德语把动词扔到词尾)、复数。截断算法通常保留开头,而区分两枚键的往往是结尾(此文件 / 所有文件)。换行按空格切,中文可能切在字中间,或一整句没有空格而溢出。高度一变,吸底栏、对话框页脚、按钮组的共用外轮廓都会裂。加载态再换成短词,高度又缩回去,造成第二次跳动。定宽不是不能用,但它把溢出策略变成了必须显式选择的失败模式,而不是「排好了就结束」。
怎么研究
同一固定宽度填入短、中、长、无空格长串,打开截断与换行两种 CSS。记录是否还能区分成对按钮、页脚高度变化、加载时是否再跳。
自变量:宽度、溢出策略、语言、是否含插值。 因变量:成对按钮混淆、布局位移、点击目标高度变化。
只用「保存」两个汉字当样本会得出定宽无害。必须用生产环境会出现的最长插值句。
边界
图标按钮本来就定宽,没有文案可溢。数字键盘上的键位必须定宽,文案是单字符。表格里的行内按钮有时必须定宽以对齐列,此时应禁止插值进按钮,改把对象放在行的其他列。跑马灯式滚动文案能避免截断,但按钮上滚动会让人点不中,也不该用。
怎么落地
- 避免无弹性的死宽度;需要齐宽时用最小宽度加可增长,而不是最大宽度卡死。
- 若必须定宽,选换行并预留两行高度,或禁止把会变长的对象写进按钮。
- 截断时至少保证成对按钮截断后仍能区分,区分点不要落在被省略号吃掉的那一侧。
- 验证:灌入最长译句和「删除 999 项」这类插值,录页脚。出现省略后无法区分,或高度把取消顶出屏幕,定宽就输了。