Skip to Content

布局系统

本页解释 Zion UI 排版系统中的核心概念:盒子模型、定位、Flexbox 排版、溢出处理和 Web 应用响应式断点。在编辑器中对应哪些分区、如何点选,见 设计面板参考。

盒子模型

用途:控制组件的物理边界与内外留白。

页面元素可类比为「带防震垫的纸箱」:

部分说明
内容实际展示(文字、图片等)
尺寸宽高的计算方式(见下表)
内边距边界与内容之间
外边距与兄弟组件之间

尺寸计算方式

方式说明
像素固定大小,不参与弹性分配
适应由内容撑开
百分比 (%)占父容器比例
份在剩余空间中按比例分配

可设最大/最小宽高,避免极端屏幕下变形。

内边距外边距
内边距示意外边距示意

定位

用途:决定组件是否参与父容器的正常排版,以及它相对谁确定位置。

类型说明
相对定位默认定位方式。组件仍在父容器的布局流中占位,并按父容器的 Flex 方向、对齐、间距等规则排列。
绝对定位组件脱离父容器的正常布局流,不再挤占兄弟组件的位置;它的位置由相对父容器的偏移量决定。
固定定位组件脱离页面滚动流,相对当前视口固定;页面滚动时仍停留在同一屏幕位置。
粘性定位组件平时随内容正常排列;当滚动到它快要离开所在滚动容器的某条边时,吸附在这条边上不再滚走。

相对定位

相对定位适合绝大多数常规排版。组件会作为父容器中的一个子项,和兄弟组件一起参与 Flex 布局。

常见场景:

  • 卡片里的标题、图片、按钮按顺序排列。
  • 页面区域按上下结构或左右结构排布。
  • 希望组件随父容器尺寸变化而自动调整位置。

绝对定位

绝对定位适合需要精确放在父容器某个位置的元素。它不会影响兄弟组件的排版,也不会为自己保留原本的布局空间。

常见场景:

  • 在图片右上角放一个角标。
  • 在卡片内部固定一个关闭按钮。
  • 在某个容器内叠放一个装饰图层。

使用绝对定位时,重点关注两个问题:

问题说明
相对谁定位通常相对直接父容器。
是否还占位不占位,兄弟组件会像它不存在一样继续排版。

固定定位

固定定位适合需要跟随视口停留的元素。它不跟随页面内容一起滚动。

常见场景:

  • 吸顶导航。
  • 悬浮客服按钮。
  • 固定在屏幕底部的操作栏。

固定定位与绝对定位都可以设置偏移,但参考对象不同:绝对定位参考父容器,固定定位参考视口。

固定定位只对直接放在页面下的组件开放;放在视图等容器里的组件,定位类型里不会出现「固定」。需要在容器内部实现吸附效果时,用下面的粘性定位。

粘性定位

粘性定位介于相对定位和固定定位之间:组件平时像相对定位一样占位、跟着内容一起滚动;当它随滚动快要离开所在滚动容器的某条边时,就吸附在这条边上,直到父容器整体滚出可视区域才一起离开。

常见场景:

  • 长列表的分组标题,滚到顶部时停住,被下一组标题顶走。
  • 页面内容区的筛选栏,滚过去之后一直贴在顶部。
  • 详情页底部的购买栏,先在内容末尾正常显示,内容更长时则吸在底部。
问题说明
相对谁吸附离它最近的、溢出设置为「滚动」或「自动」的祖先容器。最稳妥的做法是给它一个固定高度、Y 轴溢出为「滚动」的视图作为父容器。
是否还占位占位。它仍是父容器 Flex 布局中的一个子项,兄弟组件会给它留出空间。
偏移是什么意思吸附后与所选边的距离。比如选「上」并填 60,表示距滚动容器顶部 60 px 时开始吸附。
什么时候松开父容器整体滚出滚动容器时,它会跟着父容器一起离开,不会越过父容器的边界。
会不会被盖住会。组件默认按先后顺序绘制,吸附后它和后面滚上来的内容重叠,不设层级就会被盖住,看起来像没有生效。

配置步骤:

  1. 准备一个会滚动的容器:新建一个视图,高度设为固定像素值,「Y 轴溢出」选「滚动」,把标题栏和下方内容都放进去。
  2. 选中要吸附的组件,「位置 · 类型」选「粘性」。
  3. 用四向偏移选择吸附的边并填距离:上、下、左、右可各选一个方向,常用的是只选「上」或只选「下」,距离 0 表示贴着容器边缘。
  4. 把它的「层级」设为大于后面兄弟组件的值,例如 1。

粘性定位配置

粘性定位滚动效果

粘性定位和固定定位都能做出「吸顶」效果,区别在于:固定定位从一开始就脱离内容、钉在视口上;粘性定位先随内容滚动,到位后才吸附,并且会被父容器的边界限制。页面级的导航栏、底部操作栏用固定定位,内容区内部的分组标题、筛选栏用粘性定位。

层级、Z-index 与偏移字段见 设计面板参考 · 位置。

Flexbox 排版逻辑

用途:容器内子组件的方向、对齐与间距。

布局图解

页面与视图等容器具备布局能力;相对定位的子组件按下列规则排列。

方向

布局方向示意

方向说明
水平子组件沿横轴排列
垂直子组件沿纵轴排列

分布和对齐

分布方式示意

分布方式说明
聚合子组件聚在一侧
间隔分布间距相等,首尾贴边
均匀分布间距相等,含与容器两端间距
环绕分布组件两侧等距;两端空隙通常小于组件间距

换行

当一行(列)放不下时,可折到下一行(列)。

换行示意

间隔

统一设置相邻子组件间距。

间距示意

溢出

溢出示意

模式说明
滚动超出时出现滚动条
可见超出仍可见
隐藏裁剪超出部分

未开启换行时,可分别控制水平、垂直方向溢出。

响应式断点

Web 应用支持桌面、平板、手机三个断点。断点用于让同一个 Web 应用在不同视口宽度下使用不同的位置、尺寸、布局和样式配置。

桌面是 Web 应用主断点。平板和手机都直接继承桌面配置;平板和手机是同级断点,二者之间没有继承关系。你在平板断点上的修改只影响平板,在手机断点上的修改只影响手机。

断点只属于 Web 应用。微信小程序和移动应用是独立客户端,不是 Web 应用的手机断点,也不会继承 Web 应用 UI。

适合按断点调整的内容包括:

配置示例
位置手机端调整悬浮按钮位置。
尺寸桌面端卡片固定宽度,手机端改为全宽。
布局桌面端横排,手机端纵排。
样式某个装饰组件只在手机端隐藏。

断点宽度、复写字段和隐藏规则见 断点规格参考。

相关阅读

Last updated on