Flow
自动布局(流动)容器,类似 Flex 的自动布局,简单、直观,适合可视化编辑。
Box / Frame 元素也支持自动布局属性( 需引入此插件包)。
关键属性
flow: boolean
| IFlowType
是否进行自动布局,可进一步指定布局的轴方向 x 或 y ,默认为 x 轴。
ts
type IFlowType = IAxis | IAxisReverse
type IAxis = 'x' | 'y' // 轴方向
type IAxisReverse = 'x-reverse' | 'y-reverse' // 反向轴
flowWrap: IFlowWrap
是否自动换行, 默认不换行。
ts
type IFlowWrap = boolean | 'reverse' // reverse表示颠倒行顺序
flowAlign: IFlowAlign
| IFlowAxisAlign
子元素对齐方式, 默认为 top-left。
ts
type IFlowAlign = IAlign | IBaseLineAlign
type IAlign =
| 'top-left'
| 'top'
| 'top-right'
| 'right'
| 'bottom-right'
| 'bottom'
| 'bottom-left'
| 'left'
| 'center'
// 后续支持baseline
type IBaseLineAlign = 'baseline-left' | 'baseline-center' | 'baseline-right'
可以进一步设置行内的轴对齐方式。
ts
interface IFlowAxisAlign {
content?: IFlowAlign
x?: IAxisAlign // 行内 x 轴对齐,不设置时为 from
y?: IAxisAlign // 行内 y 轴对齐,不设置时为 from
}
// from 表示对齐行内轴起点, to 表示对齐行内轴终点
type IAxisAlign = 'from' | 'center' | 'to'
行内 X 轴对齐
行内 Y 轴对齐
gap: IGap
| IPointGap
子元素之间的间距, 默认为 0。
ts
// 设置 auto / fit 会均分剩余的空间,auto 最小值为 0,fit 允许为负数。
type IGap = number | 'auto' | 'fit'
interface IPointGap {
x?: IGap // 单独设置 x 轴间距
y?: IGap // 单独设置 y 轴间距
}
辅助属性
padding: IFourNumber
容器内间距, 默认为 0。
itemBox: 'box'
| 'stroke'
采用子元素的哪个盒类型来布局, 默认 box。
子元素属性
inFlow: boolean
是否加入自动布局, 默认会加入。
autoWidth: number
自动宽度权重,分配剩余宽度给元素(忽略 width),类似 Flex 的 grow / shrink,默认为 0。
后面会支持百分比宽度。
autoHeight: number
自动高度权重,分配剩余高度给元素(忽略 height),类似 Flex 的 grow / shrink,默认为 0。
后面会支持百分比高度。
widthRange: IRangeSize
限制 autoWidth 影响的宽度范围。
ts
interface IRangeSize {
min?: number
max?: number
}
heightRange: IRangeSize
限制 autoHeight 影响的高度范围。
ts
interface IRangeSize {
min?: number
max?: number
}
lockRatio: boolean
采用自动宽高时,是否锁定原始宽高比例,默认为 false。