跳转到内容

布局

布局的尺度只有一把尺:4px 网格。间距、控件高度、字段宽度、面的内衬、断点全部锚在它上面,组件里没有第二套数。

间距阶梯

令牌取值预览说明
--xh-space-0_52px半阶补偿:图标基线、几何对齐
--xh-space-14px贴在一起的:标签贴控件、说明贴控件、图标贴文字
--xh-space-1_56px半阶补偿:紧凑控件
--xh-space-28px同一组里的相邻项:控件内图标与文字、集合标题与集合
--xh-space-2_510px半阶补偿
--xh-space-312px控件的行内内衬(md)
--xh-space-416px不同信息组之间
--xh-space-520px
--xh-space-624px区块之间
--xh-space-728px
--xh-space-832px页面级分段

规则:所有 padding、gap 与布局间距走令牌;2 / 6 / 10 只用于图标基线、紧凑控件与几何补偿,不出现 5 / 7 / 9 / 13 / 15 这类散值;信息关系越紧密间距越小,不同信息组至少提升一个档位。

面的内衬只走 --xh-surface-*px-sm / mdpy-sm / mdpad-xs … lg),页面分段走 --xh-section-py-*,布局组件的列隙走 --xh-layout-gap-xs … xl、列的最小宽走 --xh-layout-col-min-xs … lg

控件高度与密度

密度smmdlg
comfortable(缺省)32px36px40px
compact28px32px36px
  • md 是缺省尺寸;同一 size 不随断点自动改变高度。
  • 图标按钮的视觉盒遵循同一高度;粗指针命中区至少 44×44px,用伪元素扩展,不改布局盒。
  • 尺寸档同时换行内内衬(--xh-control-px-sm / md / lg = 8 / 12 / 16px)、内部间隙(--xh-control-gap-* = 4 / 8 / 12px)、字号(--xh-control-font-*)与图标(16 / 20 / 24px)。
  • 密度(data-density="compact")只收紧高度、内距与间隙,不缩字号和字形。
  • 正方盒(Avatar、色块、图标包装)走 --xh-control-box-sm / md / lg = 32 / 40 / 48px。

字段的宽度

单行字段不传尺寸时一族同宽:根缺省 inline-size: var(--xh-control-w)(16rem),宽度不随内容走——选中一条很长的选项触发器也不变宽。另有一条底线 --xh-control-min-w(12rem):字段被 flex / grid 容器压缩时收到这里为止,容器比底线还窄时收成容器宽,不越出去。要撑满表单列在根上写 inline-size: 100%

例外只有登记过的几件:日期范围选择器起止两组按日的段位放不进 16rem,缺省按内容撑开;分格输入由格数与格宽定宽;对话输入条铺满宿主;表单字段(Field)的控件铺满表单列。槽名与放开方式见 皮肤与样式分层 · 输入类控件的缺省宽度与最小宽度

断点

令牌取值说明
--xh-breakpoint-sm640px手机横屏起
--xh-breakpoint-md768px平板;浮层里的多列面板在此以下改单列
--xh-breakpoint-lg1024px桌面;Layout 的 siderBreakpoint 常取这一档,以下折叠侧栏
--xh-breakpoint-xl1280px宽桌面

断点只用 min-width 自窄到宽依次接管,写了哪档就在哪档切换;媒体查询不改选择器权重。多数"窄处坏掉"的问题不靠断点解决:flex-wrap、min-inline-size: 0overflow-wrap、把死地板改成能让步的 min(…, 100%),这些规则在窄视口与窄容器(1280 宽屏里的 260px 侧栏)两种情形下同时成立。

布局组件

组件管什么
Layout页面骨架:页头、侧栏、内容、页脚;侧栏可折叠、可在断点以下改成覆盖层
Flex一维排列,间隙走 --xh-layout-gap-*
Grid二维栅格,列的最小宽走 --xh-layout-col-min-*
Masonry瀑布流
Splitter / Resizable可拖动分栏与可拖动尺寸
Separator分隔线,取 --xh-border-subtle
ScrollArea组件内滚动面,自绘条或原生细条按 组件内滚动 归档

表单排布

Form 四种排布:vertical(缺省,纵向一列)、horizontal(标签左置两列,整表标签列宽由 --xh-form-label-w 统一对齐)、inline(横向一行流,放不下自动换行)、grid(等宽列网格,列数 1 – 4 逐断点声明,单个字段可跨列或占满整行)。字段标签贴控件 --xh-space-1,说明与错误文案同样 --xh-space-1,字段与字段之间走 --xh-form-gap(缺省 --xh-stack-gap-md)。

浮层尺寸

锚定浮层的宽高走 --xh-overlay-*:面板最小宽 12rem、菜单最小宽 10rem、最大宽 sm / md / lg / xl = 16 / 20 / 24 / 48rem、菜单最大高 20rem;Dialog 的 sheet 宽 sm / md / lg = 24 / 32 / 48rem,Drawer 宽 sm / md / lg = 16 / 20 / 28rem。锚定浮层同时接可用高度与可用宽度:视口放不下时先收自己,再翻面。

相关

Released under The MIT License