Skip to content

FaLayoutGrid 响应式布局

根据容器宽度而非全局窗口宽度选择断点,适合可拖宽 Drawer、Dialog、表单和表格搜索区域。

响应式列数与跨列

查看代码
Vue
<template>
	<FaLayoutGrid :cols="{ xs: 1, sm: 2, md: 3, lg: 4, xl: 5 }" :gap="16">
		<FaLayoutGridItem v-for="item in 5" :key="item">
			<div class="demo-grid-card">第 {{ item }} 项</div>
		</FaLayoutGridItem>
		<FaLayoutGridItem :span="2" :xs="{ span: 1 }">
			<div class="demo-grid-card">桌面占两列,手机占一列</div>
		</FaLayoutGridItem>
	</FaLayoutGrid>
</template>

容器断点变化事件

查看代码
Vue
<template>
	<div class="demo-stack">
		<ElAlert :closable="false" :title="`当前容器断点:${breakpoint}`" type="info" />
		<FaLayoutGrid :cols="{ xs: 1, sm: 2, md: 3, lg: 4, xl: 5 }" :gap="12" @breakpoint-change="breakpoint = $event.breakpoint">
			<FaLayoutGridItem v-for="item in 5" :key="item"
				><div class="demo-grid-card">{{ item }}</div></FaLayoutGridItem
			>
		</FaLayoutGrid>
	</div>
</template>

<script setup lang="ts">
import { ref } from "vue";

const breakpoint = ref("等待布局计算");
</script>

折叠行与末尾操作项

查看代码
Vue
<template>
	<FaLayoutGrid :cols="{ xs: 1, sm: 2, md: 3, lg: 4, xl: 5 }" :gap="[16, 12]" :collapsed="collapsed" :collapsed-rows="1">
		<FaLayoutGridItem v-for="item in 8" :key="item" :index="item - 1">
			<div class="demo-grid-card">筛选项 {{ item }}</div>
		</FaLayoutGridItem>
		<FaLayoutGridItem suffix :span="1">
			<ElButton type="primary" @click="collapsed = !collapsed">{{ collapsed ? "展开" : "收起" }}</ElButton>
		</FaLayoutGridItem>
	</FaLayoutGrid>
</template>

<script setup lang="ts">
import { ref } from "vue";

const collapsed = ref(true);
</script>

FaLayoutGrid 完整 API

Props 属性 (4)
属性来源说明类型默认值
colsFast 新增各响应式断点的列数。String / Number / Object{"xs":1,"sm":2,"md":3,"lg":4,"xl":5}
collapsedFast 新增是否启用折叠布局计算。Booleanfalse
collapsedRowsFast 新增折叠状态保留的行数。String / Number1
gapFast 新增网格水平与垂直间距。Number / Array0
Events 事件(1)
名称来源说明参数 / 类型
breakpointChangeFast 新增容器宽度跨越响应式断点时触发,参数为新的断点名称。
Slots 插槽(1)
名称来源说明参数 / 类型
defaultFast 新增组件默认内容插槽。
Expose 暴露(1)
名称来源说明参数 / 类型
breakpointFast 新增当前容器命中的响应式断点。

关联组件:FaLayoutGridItem

支持基础 spanoffset、末列 suffix,以及 xssmmdlgxl 的独立覆盖。

Span、Offset、Suffix 与断点覆盖

查看代码
Vue
<template>
	<FaLayoutGrid :cols="{ xs: 1, sm: 3, md: 4, lg: 5, xl: 6 }" :gap="16">
		<FaLayoutGridItem :span="2" :xs="{ span: 1 }"><div class="demo-grid-card">span=2,手机 span=1</div></FaLayoutGridItem>
		<FaLayoutGridItem :span="1" :offset="1" :xs="{ span: 1, offset: 0 }"><div class="demo-grid-card">offset=1</div></FaLayoutGridItem>
		<FaLayoutGridItem suffix :span="1"><div class="demo-grid-card">suffix 贴齐末列</div></FaLayoutGridItem>
	</FaLayoutGrid>
</template>

FaLayoutGridItem 完整 API

Props 属性 (8)
属性来源说明类型默认值
offsetFast 新增偏移量或浮层偏移。String / Number0
spanFast 新增占用的网格列数。String / Number1
suffixFast 新增是否作为布局末尾操作项。Booleanfalse
xsFast 新增xs 断点下的布局配置。Object
smFast 新增sm 断点下的布局配置。Object
mdFast 新增md 断点下的布局配置。Object
lgFast 新增lg 断点下的布局配置。Object
xlFast 新增xl 断点下的布局配置。Object
Events 事件(0)
名称来源说明参数 / 类型
无运行时 Emits 声明。
Slots 插槽(1)
名称来源说明参数 / 类型
defaultFast 新增组件默认内容插槽。
Expose 暴露(1)
名称来源说明参数 / 类型
showFast 新增布局项当前是否可见。

断点范围

断点容器宽度
xs0 - 479px
sm480 - 768px
md> 768 - 1024px
lg> 1024 - 1440px
xl> 1440px