跳转到内容

弹性布局 flex

布局组件。三层同源:无头内核给出解剖与状态机,Vue 组件与自定义元素只是它的两层外壳,行为完全一致。

示例

基础用法

一维排布容器:子项横着排,间距走档位,容器自己不给子项加任何样式

方向

direction 换主轴:row 横排(缺省),column 竖排

row(缺省)
column

对齐与分布

justify 管主轴怎么分,align 管交叉轴怎么对;两条轴互不相干

justify = start
justify = center
justify = end
justify = between
align = start
乙(更高)
align = center
乙(更高)
align = end
乙(更高)
align = stretch
乙(更高)

间距档位

gap 收的是档位名不是像素:xs / sm / md / lg / xl 逐档指向一个间距令牌

gap = xs
gap = sm
gap = md
gap = lg
gap = xl
槽位覆盖

折行与行内

wrap 让放不下的子项换行、行与行之间同样吃 gap;inline 让容器缩到内容宽度、能跟文字排一行

不折行(缺省):全部挤在一行里,宽度不够就被压窄
前端组件库无障碍设计令牌自定义元素键盘导航
wrap:换行摆,行间距同样是 gap
前端组件库无障碍设计令牌自定义元素键盘导航
inline:容器缩到内容宽度,跟前后文字排在同一行
当前筛选条件为
近 7 天已完成
,共 24 条。

产物

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

解剖

部件名即 data-part 属性值,也是皮肤的选择器。加粗的是必备部件,不渲染它组件不工作(Web Components 适配器会在诊断通道上报 wc.missing-part)。

data-scope="flex"root

Props

属性类型必填说明
alignFlexAlign交叉轴对齐:start / center / end / stretch / baseline,不写则由皮肤的缺省对齐决定。
directionFlexDirection主轴方向:row 横排、column 竖排,缺省 row。
gapFlexGap子项间距档位:xs / sm / md / lg / xl,不写则不留间距。档位换算成多少由皮肤定。
inlineboolean容器按行内盒排版,宽度收到内容。
justifyFlexJustify主轴分布:start / center / end / between / around / evenly,不写则子项从主轴起点排起。
wrapboolean一行放不下时折行。

connect API

connect 产出的对象。getXxxProps() 铺到对应部件的宿主元素上,其余是可读状态与操作入口。

成员类型说明
getRootProps() => T['element']

键盘

规格出处:W3C APG

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

Released under The MIT License