布局

生成器把两个问题——画布上放什么(左)和它长什么样(右)——组合成五种布局之一。平台自己的生成器覆盖了全部五种;你的生成器从最接近的那一份起步。

五类模板

#模板适用
1layout-1-params.html320 参数没有东西可挑可生成,用户只调值
2layout-2-templates.html320 模板320 参数左侧只有一件事:浏览并选择模板
3layout-3-generate.html320 生成,停靠320 参数从一个输入(提示词、风格、图片)出发,再调整
4layout-4-floating.html360 生成,悬浮选中风格后在对话框里配置这次生成,之后没有可调项
5layout-5-multi.html64 工具 + 320 面板320 参数左侧有多件事:生成、模板、导入

在 3 和 4 之间拿不定时,问题只有一个:生成之后还要调东西吗?要,选 3。结果即终稿,选 4。

1 无左栏 + 参数栏
2 模板 320 + 参数栏
3 生成 320 停靠 + 参数栏
4 生成 360 悬浮,无参数栏
5 工具 64 + 面板 320 + 参数栏

五种组合,一副骨架:左边是要挑选或要生成的东西,中间是结果,右边是要调整的参数,导出(深色小块)永远在右下。

每份模板有两种形态。骨架版<layout>.skeleton.html)是结构加完整样式表、剥掉脚本块——搭页面结构时读这一份,文件里没有别的东西跟布局和令牌抢注意力。可运行版(同一地址去掉 .skeleton)把行为也内联进来,用来看示例跑起来;里面控件做的事是演示,不是规范。两种都是单个 HTML 文件,没有第二份要一起拷的。

里面每个控件都能用——重置、单位切换、数值字段的拖拽改值、缩放、下拉、收起、加工 Tips 的分步引导、二级页。只有导出按钮是替身,它会说明平台本来会做什么。下面可以直接操作,下载后复制进项目即可。

布局模板 · 骨架版 + 可运行 HTML · layout-1-params.html 下载 新标签打开
布局模板 · 骨架版 + 可运行 HTML · layout-2-templates.html 下载 新标签打开
布局模板 · 骨架版 + 可运行 HTML · layout-3-generate.html 下载 新标签打开
布局模板 · 骨架版 + 可运行 HTML · layout-4-floating.html 下载 新标签打开
布局模板 · 骨架版 + 可运行 HTML · layout-5-multi.html 下载 新标签打开

区域

区域宽度装什么
平台顶栏64平台自己画的——你不要再加一条
工具栏64仅布局 5:每个左侧面板一枚图标
左侧栏320,悬浮时 360可添加、可生成的东西:模板、风格、提示词、导入
画布侧栏之外的全部预览,加四个覆层:视图 tab、加工 Tips、缩放,以及没有参数栏时的导出
参数栏320属性卡片堆,导出固定在底部

侧栏定宽。窗口的变化全部由画布吸收:窗口变宽,参数栏不跟着变宽。

停靠区域之间没有间距也没有圆角,侧栏与画布之间只有一条 1px 的 stroke-default。悬浮栏是唯一例外:白卡片、12px 圆角、shadow-100 阴影,距画布顶、起始、底三边各 16px。

左侧栏可收起为画布左上角一枚 40px 的胶囊(侧栏标题 + 面板图标),画布随之变大。布局 5 里再次点击已选中的工具即可收起面板。

参数栏永远 320px,永远三段:

  • 头部行——起始端单位切换,末端 Reset
  • 中间——可滚动的属性卡片堆
  • 底部——导出按钮,固定在这里,不用滚动去找

派生结果(用量、零件数、时长)标注在画布上,或放进卡片堆底部的一张卡片。它们不单开一列。

画布的四个角

画布上只有四个覆层,别无其他:视图 tab 在顶部居中,加工 Tips 胶囊在顶部末端,缩放簇在底部起始端。第四个是导出,只在没有参数栏时出现在底部末端。覆层 hover 时不位移。

缩放是自由值,不是固定档位:滚轮与双指捏合连续缩放画布且锚在指针位置,拖拽画布即平移,读数是一个菜单按钮、菜单里列几档作为快捷入口,「适应画布」量画布算比例并把画板归位。菜单列哪几档、范围到哪,由你定。

前置栏可以有二级页:分区的「View all」或栏底的历史行,会把栏内内容替换成一行返回按钮加一个三列 90px 方块的栅格。画布不动,也不弹对话框;Back 是唯一的出口。

视图切换是分段控件,不是页签条:两到三个互斥视图(2D design / 3D preview / Export)。超过三个,说明画布承担了太多。顶部末端那枚胶囊只打开加工 Tips 的分步引导,不做别的。

属性卡片

参数按对象或按功能分组进属性卡片:白底、stroke-divider 边框、四角 8px 圆角、shadow-100,在 bg-subtlest 面板上以 12px 间距堆叠。一张卡片就是一行标题加它下面的字段行。标题行是整行宽的 <button aria-expanded>,起始端是标题,末端是展开箭头。卡片本身是 <section>,用 aria-labelledby 指向那行标题。

参数少的卡片保持展开,参数多的可以默认收起。收起只改两样东西:卡片内容的 hidden,和箭头的旋转。没有高度动画。

字段行标签 ⋯ 控件,上下 8px、左右 16px 内边距,标签用 text-primary,控件靠末端对齐。取值的类型决定控件:数值用 92px 输入框,选项用 110px 下拉,范围用滑块并在旁边显示数字,开关用开关,颜色用一枚 24px 色块。

Shape
mm
Color
Fill mode

第二张卡片默认收起:标题行仍在,箭头翻转,卡片只剩一行高。点标题展开。

流程与状态

布局必须让流程一目了然:挑选或输入 → 配置 → 生成 → 检视 → 导出。实时预览型生成器拖动滑块就重绘,没有「生成」这一步;给它加一个 Generate 按钮是缺陷。

预览有三个状态,三个都要设计:

  • ——展示示例或提示,不是一块空白矩形
  • 计算中——阶段名、数字,以及取消的入口;不是无限转圈
  • 完成——缩放、平移、对比、重新生成

错误放在引发它的控件旁边,并给出下一步。屏幕顶部的 toast 是错误被忽略的地方。

尺寸与滚动

你的宽度是平台分配的区域,不是视口,所以用容器查询适配。960px 以下三个区域堆叠,画布在先、侧栏在后,导出按钮仍固定在底部。

侧栏在自己内部滚动,用细滚动条。不要出现横向滚动,也不要把一个滚动容器套进另一个。既要填满又要能滚的面板,flex: 1min-height: 0 缺一不可。前者让它长满,后者允许它收缩到比内容矮。少了后者,flex 子项保持默认的 min-height: auto,不肯收缩,于是溢出而不滚动。模板里每个滚动容器都是两条一起写的。

Esc
输入关键词搜索全部文档 · 切换 · 打开