R4.10.3unfixed window canvas设计
窗口尺寸自由决定布局不能假设固定画布
别名: 自由窗口 · fluid window layout · 非固定画布
概念解释
Windows 上的应用活在用户拖出来的窗口里,不活在设备出厂的那块屏幕里。宽可到铺满显示器,窄可到侧边分屏的一条。Fluent 把这件事当成布局前提:不能按一张固定画布排元件。这个前提叫非固定窗口画布(unfixed window canvas)。手机式「按一种宽度验收」在这里会裁切、重叠或留下大片空白。
它不讨论菜单栏和快捷键如何分类,也不讨论键鼠与触摸如何共存。它只讨论空间:布局的自变量是当前窗口的宽与高,不是设计稿上的画板。
机制
用户把窗口当工具,不把应用当海报。尺寸是会话中的连续变量:对照文档时拉窄,比较两列时拉宽,投到另一块屏时比例又变。若布局在设计时锁死一组坐标,运行时的每一个尺寸都是「错误尺寸」。重排、折行、改列数、改导航形态,是对连续变量的响应,不是三种断点皮肤。
固定画布的幻觉来自设计工具:画板有宽高。验收如果只对着那一张图,工程就会把那张图当成契约。真正的契约是窗口四边可被用户随时改写。布局系统必须把「现在有多宽」读成输入,而不是把「设计稿有多宽」写成常量。
边界
全屏游戏、固定比例的视频播放器、机柜里的 kiosk 可以把画布钉死,那是产品合同,不是 Fluent 桌面应用。极小窗口可以声明最低尺寸并拒绝再缩,但最低尺寸仍须能完成主任务,不能把「请最大化」当成布局。多显示器缩放不同,同一窗口跨屏时逻辑像素会变,固定物理像素的背景图会先裂。打印和导出 PDF 是另一种固定画布,不要和窗口布局共用一套假设。
怎么落地
- 用弹性容器和折行列,而不是按设计稿坐标绝对定位;导航在变窄时改形态,而不是裁掉入口。
- 规定最低可用宽度,并在该宽度下走完主任务;低于最低宽度时限制缩放并说明原因。
- 把极窄、中等、极宽、竖向窗口列入同一条验收,而不是只签 1280 宽的一张图。
- 验证:不改内容,把窗口从最低宽度连续拖到最大化,录屏。出现裁切、重叠、不可达按钮、或突然跳到「请放大窗口」空态的每一处,都是把画布当成了固定的。再在分屏占半屏时重复一次。