Skip to content

Grid 网格布局

基于 CSS Grid 的网格布局组件,相比 Row/Col 的 Flex 布局,提供更强大的二维布局能力。

基础用法

设置 cols 属性定义列数,gap 属性设置间距。

1
2
3
基础用法

跨列

使用 span 属性设置 GridItem 跨越的列数。

span=2
span=3
span=1
span=6 (整行)
跨列

偏移

使用 offset 属性设置 GridItem 的列偏移量。

A
B (offset=2)
偏移

不同间距

gap 属性支持传入数组 [行间距, 列间距] 来分别设置行列间距。

1
2
3
4
5
6
7
8
不同间距

自定义列模板

cols 属性传入字符串时,将直接作为 CSS grid-template-columns 的值,实现灵活布局。

200px
1fr
200px
自定义列模板

Suffix 后缀元素

设置 suffix 属性可将 GridItem 固定到行末。

内容
Suffix
Suffix 后缀元素

在 Nuxt 中使用

Grid 组件完全支持 Nuxt 3/4 的 SSR 渲染。以下示例展示了在 Nuxt 中使用 Grid 布局构建商品列表页面,结合 useFetch 异步加载数据。

商品列表

商品 1
¥ 99.9
商品 2
¥ 199.8
商品 3
¥ 299.7
商品 4
¥ 399.6
Nuxt 中使用

SSR 注意事项

  • ✅ 所有 Props 和样式完全支持
  • ✅ CSS Grid 布局正确渲染
  • ✅ 插槽内容完整渲染
  • cols 字符串模板模式正常输出
  • spanoffsetsuffix 等定位属性完美工作

SSR 安全性

Grid 组件已通过完整的 SSR 测试,确保服务端和客户端渲染完全一致,Hydration 无错误。

API

Grid Props

属性名说明类型默认值
cols列数或 CSS 列模板number | string12
gap间距number | string | [number | string, number | string]0
colGap列间距(优先于 gap)number | string0
rowGap行间距(优先于 gap)number | string0
collapsed是否折叠booleanfalse
collapsedRows折叠后显示行数number1
justifyItems水平对齐'start' | 'end' | 'center' | 'stretch'
alignItems垂直对齐'start' | 'end' | 'center' | 'stretch'
themeOverrides主题覆盖变量ComponentThemeVars

GridItem Props

属性名说明类型默认值
span跨列数number1
offset偏移列数number0
suffix是否为后缀元素(固定行末)booleanfalse
themeOverrides主题覆盖变量ComponentThemeVars

Slots

Grid 和 GridItem 均支持 default 默认插槽。

主题变量

Grid 组件支持通过覆盖以下 CSS 变量来自定义局部样式:

Grid 变量

变量名说明默认值
--yh-grid-gap网格间距0
--yh-grid-col-gap网格列间距var(--yh-grid-gap, 0)
--yh-grid-row-gap网格行间距var(--yh-grid-gap, 0)

GridItem 变量

变量名说明默认值
--yh-grid-item-padding项目内边距0

Released under the MIT License.