v0.1.9

Flex 弹性布局

引入import { Flex } from '@apollo-design/ui';

Flex 直接对完整 Vue 内容进行排列和对齐,不为每个子项增加包裹元素。需要为内联子项分别提供间距宿主时可使用 Space。

代码演示

加载中…

基本布局 #

使用Apollo Radio.Group切换横向与纵向布局,子元素直接参与 Flex。

加载中…

对齐方式 #

使用原生下拉控件改变主轴与交叉轴对齐。横向默认顶部对齐,纵向默认拉伸。

加载中…

设置间隙 #

三档预设消费当前主题别名;自定义滑块支持零间距,并在条件出现时保留独立名称。

加载中…

自动换行 #

真实按钮按可用宽度自动换行,保留原生 Tab 顺序。

加载中…

组合使用 #

嵌套 Flex 构建响应式项目摘要;本地内容无需外部图片,详情按钮展开业务说明。

加载中…

布局块 #

观察纵向和横向不同高度的装饰块;不为每个子项增加包裹元素。

六组成对 Demo 展示方向、对齐、间距、换行、响应式项目摘要和布局块。演示中的原生控件具有独立名称,保留正常键盘操作。

API

参数 说明 类型 默认值
prefixCls 完整类名前缀;自定义前缀由调用方提供对应静态 CSS string 当前 ConfigProvider,兜底 apollo-flex
vertical 主轴是否垂直;未传时读取当前 flex.vertical boolean undefined
orientation 优先于 vertical 和 Provider 的方向 'horizontal' | 'vertical' 最终兜底 horizontal
wrap 多行排列;true 等于 wrap boolean | 'wrap' | 'nowrap' | 'wrap-reverse' 单行
justify 主轴 CSS 对齐方式 FlexJustify 原生 flex-start 行为
align 交叉轴 CSS 对齐方式 FlexAlign 横向 flex-start;纵向 stretch
flex CSS 简写,数字无单位 string | number —
gap 像素数字、CSS 长度或预设 'small' | 'medium' | 'middle' | 'large' | string | number —
component 原生标签,或将 attrs/default slot 转发到所属宿主的 Vue 组件 Component | string 'div'

方向优先级为 orientation → 显式 vertical → 当前 ConfigProvider flex.vertical → horizontal。Provider 的 flex.className、flex.style、vertical、direction 和前缀均响应当前配置。显式原生 dir 优先于 Provider 方向。

插槽、事件与状态

仅提供 #default,支持零、文本、多个 VNode 与 Fragment 等完整 Vue 内容。没有业务 emits 或 v-model。根原生监听器接收原始 DOM 事件且只触发一次;调用方的输入、链接、按钮拥有其原生语义、焦点和键盘行为。

根 class、style、id、data/ARIA、tabindex 和监听器走 Vue attrs。style 接受字符串、对象和数组。优先级为当前主题别名 → Provider flex.style → 原生 style → flex/非预设 gap 派生值。外观更新保留宿主与业务 key 的子项;修改 component 按 Vue 正常替换其所属宿主。空根仍挂载,保留布局与原生语义。

Ref

名称 类型 说明
nativeElement HTMLElement | null 当前唯一 HTML 宿主,含 Vue 根组件的真实元素;挂载前、卸载后或没有唯一 HTML 宿主时为 null

自定义 Vue 组件负责自己的 attrs/slot 转发;Flex 暴露实际 HTML 宿主,不暴露组件实例。Fragment、纯文本和非 HTML 根不提供 nativeElement。

Theme

Flex 没有组件 Token。small 消费当前 paddingXS,medium/middle 消费 padding,large 消费 paddingLG。存在 ThemeContext 时在 Flex 根作用域写入这三个别名变量,支持不全局注入的 ThemeProvider 及嵌套默认主题复位。原生 style 的自定义属性可局部覆盖别名。数字 gap 支持零与小数。

Powered by Vue 3 + ViteApollo Design · Vue NativeGitHub