窗口可被任意缩放,布局需连续可用
别名: 自由缩放 · 连续布局 · liquid window layout
概念解释
桌面窗口没有固定的「设计宽度」。边框可以被拖到任意像素,客户区停在中间任何一档都合法。连续可用指布局在整条宽度和高度轴上都还能完成当前任务:控件找得到、文字读得完、主操作未被裁切。它不是「在几种常见分辨率下看起来还行」,而是用户拖动过程中的每一帧都不能把界面用废。
这条只谈缩放过程中的中间态必须可工作。两端极窄极宽要另作处理,重启后尺寸记不记得住也不在这里。
机制
窗口管理器把尺寸交给用户,不交给应用的设计稿。工具栏、侧栏、分栏、状态栏都在抢同一块客户区,拖动时它们的约束同时被改写。若布局只在若干断点上重新计算,断点之间就会出现裁切、重叠、不可滚动的溢出——人拖的是连续的边,应用却按离散台阶在响应。
失败通常不是「太窄」这一种。半途出现横向滚动条挡住主按钮、侧栏把内容区压成一条缝、表格列宽锁死导致关键列出画,都是同一件事:应用把某个宽度当成了默认世界,其余宽度当成异常。桌面的默认世界并不存在,因为前一个应用、贴边分屏、用户偏好的字体缩放,都会在你画布局之前先改写客户区。
怎么研究
用窗口管理现场研究和受控缩放任务。Hutchings 与 Stasko 一类观察会记录真实桌面上窗口被拖成哪些尺寸、多久拖一次;实验室里则把同一任务固定在若干随机宽度上,看布局策略(重排、裁切、等比缩放、出现滚动)如何影响完成。
自变量:窗口宽度与高度、布局策略、是否允许内部滚动。 因变量:任务完成率、被裁切或重叠的必要控件数、找到主操作的时间、主观「还能用吗」。
验收宽度不能只取 1280 和 1920。连续轴上的空洞恰恰是用户会停住的地方。实验室里被试被要求「请把窗口拖到这个宽度」会高估缩放频率;现场里许多人很少拖,但一旦拖了,失败是立即的。
边界
全屏独占的游戏、放映模式、固定画幅的创作视口,尺寸由内容而不是用户决定,连续缩放不是目标。平铺式窗口管理器把窗口吸到少数几种格子里,连续轴被离散化,但格子种类仍多,不能只做一种宽度。网页被嵌在浏览器窗口里,真正的客户区还要减去浏览器外壳,应用以为的「常见宽度」会再窄一截。触屏笔记本在平板姿态下窗口可能被锁成最大化,这条约束暂时消失,回到桌面姿态就回来。
怎么落地
- 把主路径上的控件放进可以收缩的流式区域,不要用绝对坐标钉死;必要操作在任何宽度都要能被找到或滚到。
- 在断点之间也要能用:拖动窗口时不要出现无法滚动的裁切、互相覆盖的面板、或被挤出画外的提交按钮。
- 验证:从最小合理宽度连续拖到最大,每约 80–100 像素停一次,走完一条主任务。任何一档找不到主操作或必须靠水平滚动才能看见它,即未连续可用。