跳转到内容

Flex 弹性布局 ​

沿水平或垂直方向排列内容。

用法 ​

水平排列内容

组件结构 ​

加粗的是必需部件。

data-scope="flex":root · split

示例 ​

方向 ​

设置水平或垂直排列

对齐与分布 ​

对齐内容并分配剩余空间

间距 ​

使用预设间距

紧凑
标准
宽松

换行与行内 ​

换行排列或随文字排布

分隔符 ​

在相邻内容之间添加分隔符

设计指引 ​

何时使用 ​

  • 排列按钮、图标、标签或表单项。
  • 控制内容的对齐、分布、间距和换行。
  • 在相邻内容之间插入统一的分隔符。

何时不用 ​

  • 二维布局或跨列内容使用栅格。
  • 分隔页面区域使用分隔线。
  • 仅需一个固定间距时可直接使用 CSS。

特性 ​

  • 支持水平、垂直和行内布局。
  • 支持五档间距、对齐和主轴分布。
  • 支持换行和自动分隔符。

组合 ​

最佳实践 ​

  • 优先使用间距档位保持页面节奏一致。
  • 可换行内容使用 gap,不要用子项外边距拼接。
  • 动态移除可聚焦内容时,由业务层处理焦点交接。

反模式 ​

  • 不要用多层 Flex 模拟二维网格。
  • 不要用负外边距修正对齐。
  • 不要在分隔符中放置有意义的内容。

API 参考 ​

产物 ​

层值
自定义元素<xh-flex>
Vue 组件XhFlex XhFlexSplit
状态机无,connect 直接由 props 算属性
皮肤@xihan-ui/styles/flex.css

Props ​

属性类型必填说明
alignFlexAlign交叉轴对齐:start / center / end / stretch / baseline,未提供时横向按中线对齐、纵向拉伸。
gapFlexGap子项间距档位:xs / sm / md / lg / xl,未提供时不留间距。档位对应的数值由皮肤决定。
inlineboolean容器按行内盒排版,宽度收缩到内容。
justifyFlexJustify主轴分布:start / center / end / between / around / evenly,未提供时子项从主轴起点排列。
orientationOrientation主轴方向:horizontal 横向、vertical 纵向,默认 horizontal。
wrapboolean一行放不下时换行。

插槽 ​

仅列出带载荷的插槽。

Vue 组件插槽载荷说明
XhFlexdefault—子项,按写入的顺序排列。
XhFlexsplit—分隔符的内容:写了它,组件在每两个子项之间各铺设一个分隔符部件,逐缝隙重新求值一次。

React 适配器 props ​

只列各组件自己声明的那些:继承自 ComponentPropsWithRef 的 DOM 属性不在其中,根组件上与上面 Props 表同名的也不重复列。Vue 的对应物是上面的插槽表。

React 组件属性类型必填说明
XhFlexsplitReactNode分隔符的内容:提供后,组件在每两个子项之间各铺设一个分隔符部件。

connect API ​

getXxxProps() 返回对应部件的宿主属性。

成员类型说明
getRootProps() => T['element']
getSplitProps() => T['element']分隔符节点。它是装饰件,恒带 aria-hidden:一排中夹杂的竖线被逐条朗读只会打断内容。

无障碍 ​

键盘 ​

规格出处:W3C APG

无键盘交互(不接收焦点,或焦点行为完全由原生元素提供)。

ARIA ​

以下属性由 connect 生成。

部件属性值
splitaria-hidden'true'
  • 分隔符自动隐藏于辅助技术。
  • 容器不预设语义角色。

样式参考 ​

皮肤 ​

@xihan-ui/styles/flex.css 使用 [data-scope="flex"][data-part="root"] 部件选择器,位于 xihan.components 层。覆盖样式使用 xihan.overrides。

数据属性 ​

由 connect 生成;条件不成立时不输出无值属性。

部件属性值
rootdata-alignprops.align
rootdata-gapprops.gap
rootdata-inline''(条件成立时才出现)
rootdata-justifyprops.justify
rootdata-orientationprops.orientation
rootdata-wrap''(条件成立时才出现)

CSS 变量 ​

本组件公开覆盖槽由独立皮肤的实际消费位生成;默认来源、作用部件和状态均与 CSS 同源。

变量部件CSS 属性状态默认来源说明
--xh-flex-gaprootgapdefault
gap=lg
gap=md
gap=sm
gap=xl
gap=xs
--xh-layout-gap-lg
--xh-layout-gap-md
--xh-layout-gap-sm
--xh-layout-gap-xl
--xh-layout-gap-xs
--xh-space-0
flex 的 root 部件 gap 覆盖槽。

动效 ​

本组件皮肤不含过渡与关键帧,也没有脚本驱动的动效:状态一变,外观立即到位。

RTL ​

  • 使用逻辑方向属性,自动适配 RTL。

Released under The MIT License