新闻详情

新闻详情

首页 / 资讯中心 / 详情

RSUITE Grid 嵌套布局实战:在 24 列栅格系统中构建无限层级响应式结构

发布时间:2026/9/28 11:59:50来源:尧图网络
RSUITE Grid 嵌套布局实战:在 24 列栅格系统中构建无限层级响应式结构
前端UI组件【免费下载链接】rsuite A suite of React components .项目地址https://gitcode.com/gh_mirrors/rs/rsuite点击查看免费下载导读本文聚焦 rsuite 组件库 Grid 栅格系统的**嵌套Nesting**能力讲解如何在Col内部继续放置Row与Col从而在同一套 24 列栅格体系内逐层构建复杂的响应式布局。读完本文你将掌握嵌套栅格的完整写法、每一层级重新计算列宽的原理、Row与Col的间距gutter机制以及断点xs/sm/md/lg/xl/xxl在嵌套场景下的应用方式。文中所有代码与结论均可在当前仓库中找到对应的源码实现与官方演示片段。什么是嵌套栅格rsuite 的 Grid 组件提供了一套基于24 列的响应式布局系统其灵感来自 Bootstrap 的栅格系统核心由三个组件组成Grid定义整个栅格系统的容器组件Row创建水平行行内包含列组件Col创建垂直列是实际内容的容器。嵌套栅格是指在某个Col内部再放置一个Row并在其中继续使用Col划分空间。官方文档明确说明“栅格系统支持无限嵌套。你可以在列内放置行以创建更复杂和灵活的布局同时在每一层级保持相同的 24 列栅格系统”见 docs/pages/components/grid/zh-CN/index.md 的“嵌套”一节。换句话说无论嵌套到第几层每个Row内部的列宽之和始终按 24 等分计算外层列只是把“一整行”的宽度让渡给内层Row内层再独立地按 24 列重新分配。这种设计让复杂仪表盘、卡片矩阵、分栏表单等场景的布局代码保持结构清晰、可预测。嵌套布局的标准写法官方演示片段位于 docs/pages/components/grid/fragments/nested.md完整代码如下import { Grid, Row, Col, Center } from rsuite; const DecorativeBox ({ children, ...rest }) ( Center bgvar(--rs-placeholder) p{20} my{6} roundedlg {...rest} {children} /Center ); const App () ( Grid fluid Row Col span{12} Row Col span{12} Row Col span{12} DecorativeBox12/DecorativeBox /Col Col span{12} DecorativeBox12/DecorativeBox /Col /Row /Col Col span{12} Row Col span{12} DecorativeBox12/DecorativeBox /Col Col span{12} DecorativeBox12/DecorativeBox /Col /Row /Col /Row /Col Col span{12} Row Col span{12} Row Col span{12} DecorativeBox12/DecorativeBox /Col Col span{12} DecorativeBox12/DecorativeBox /Col /Row /Col Col span{12} Row Col span{12} DecorativeBox12/DecorativeBox /Col Col span{12} DecorativeBox12/DecorativeBox /Col /Row /Col /Row /Col /Row /Grid ); ReactDOM.render(App /, document.getElementById(root));该示例的实际结构是一个三层嵌套的矩阵第 1 层Grid fluid内只有一个Row包含两个span{12}的Col各占一行的一半12 12 24正好填满第 2 层每个外层Col内部再放入一个Row同样拆成两个span{12}的Col第 3 层每个第 2 层的Col内部继续放入Row再拆成两个span{12}的Col最内层放置内容盒。最终渲染出来的是一个“田字格套田字格”的 4×4 等宽矩阵而每一层代码结构完全同构。这正是嵌套栅格的核心价值复用同一套RowCol的写法即可在任意深度下保持一致的列宽语义。每一层级为什么都保持 24 列从源码看Row与Col的宽度计算并不依赖全局状态而是纯 CSS 结构Row渲染为display: flex; flex-flow: row wrap;的弹性容器见 src/Grid/styles/_row.scssCol的span会被编译成rs-col-xs-*这类类名通过 flex 的flex-basis/百分比宽度控制列宽见 src/Grid/Col.tsx 中addResponsiveClasses的类名生成逻辑断点常量定义在 src/internals/constants/index.ts[xs, sm, md, lg, xl, xxl]。因为宽度百分比始终是相对于最近的祖先Row容器计算的所以内层Row的 24 份是对它自己所在那个Col的可用宽度再切分与外层的分配互不干扰。这也是嵌套能够“无限层”的前提每一层都是一个独立的 flex 布局上下文。结合 gutter 理解嵌套间距Row支持gutter属性用于控制列与列之间的间距类型为type GutterType number | string | [number | string, number | string];其中数组形式[horizontal, vertical]可分别设置水平与垂直间距见 src/Grid/types.ts。从实现上看Row会把 gutter 转换为 CSS 变量--rs-grid-gutter水平与--rs-grid-row-gutter垂直见 src/Grid/utils/styles.ts行内通过负值外边距margin-inline: var(--rs-row-gutter)抵消列的内边距列通过padding-inline: var(--rs-col-gutter)撑开间距见 src/Grid/styles/_columns.scss。默认的 gutter 由 CSS 变量定义在 src/Grid/styles/_variables.scss:root { --rs-grid-gutter: calc(var(--rs-spacing) * 3); --rs-row-gutter: calc(var(--rs-grid-gutter) / -2); --rs-col-gutter: calc(var(--rs-grid-gutter) / 2); }嵌套时的间距表现内层Row会重新建立一组 gutter 计算因此嵌套列之间会自动产生与顶层一致的列间距无需额外手动设置。这意味着嵌套层次越多视觉上的“沟槽”会按层级自然叠加设计时需要注意层级过深时水平间距的累加效果。让嵌套栅格响应式嵌套层与顶层一样可以逐层使用响应式属性。Col的span、offset、push、pull、order、hidden均支持两种写法1. 单值写法作用于 xs 断点Col span{6}…/Col2. 响应式对象写法Col span{{ xs: 12, md: 6, lg: 4 }}…/Col在 src/Grid/Col.tsx 中resolve函数会遍历BREAKPOINTS把对象中的每个断点值编译为对应的类名单值时则统一归入xs见addResponsiveClasses(xs, propValue, type)。断点对应的屏幕宽度定义在 src/styles/_variables.scss断点最小宽度xs默认0 起sm576pxmd768pxlg992pxxl1200pxxxl1400px在嵌套布局中你可以让内层列在不同断点下呈现不同分栏数例如在手机上内层两列各占 12上下堆叠在桌面端各占 6左右并排Grid fluid Row Col span{12} Row Col span{{ xs: 12, md: 6 }} DecorativeBox左/DecorativeBox /Col Col span{{ xs: 12, md: 6 }} DecorativeBox右/DecorativeBox /Col /Row /Col /Row /Grid此外Row的gutter、aligntop/middle/bottom、justifystart/end/center/space-around/space-between同样支持响应式对象写法方便在嵌套层做对齐与分布控制。示例中的装饰盒DecorativeBox解析官方嵌套示例中用于展示占位的DecorativeBox基于Center组件实现const DecorativeBox ({ children, ...rest }) ( Center bgvar(--rs-placeholder) p{20} my{6} roundedlg {...rest} {children} /Center );它只是示例辅助组件并非嵌套栅格的必需部分Center是一个让子内容水平垂直居中的容器组件实现在 src/Center/Center.tsx支持inline属性bg、p、my、rounded等是布局属性分别设置背景色、内边距、纵向外边距与圆角这些属性来自Center继承的Box能力背景色取用了设计变量var(--rs-placeholder)在实际业务中你可以替换为真实内容组件卡片、表单、图表等。嵌套常用技巧与注意事项列宽始终按 24 等分无论嵌套多深每个Row内所有Col的span总和应保持为 24超出会按 flex 换行规则自动折行。内容放在最内层尽量让Row/Col只承担结构职责把真实内容文本、组件、图片放到最内层的容器里避免层级过多导致 DOM 过深。层级与间距叠加嵌套会继承每层 gutter 的负边距/内边距机制若视觉上间距过大可通过调整对应层Row的gutter或响应式 gutter来收敛。响应式属性下放外层列负责大区块的断点切换内层列负责区块内部的断点切换分工明确后代码可维护性最好。fluid容器便于自由嵌套示例使用Grid fluid使容器宽度为 100%见 src/Grid/Grid.tsx 中fluid属性生成的rs-grid-container-fluid类更适合嵌在页面区块或组件内部固定宽度的Grid则会在 sm/md/lg/xl/xxl 断点下依次应用 540/720/960/1140/1320 像素的容器宽度见 src/Grid/styles/index.scss。嵌套相关 Props 速查以下属性表取自官方文档docs/pages/components/grid/zh-CN/index.md供嵌套场景下组合使用Grid属性类型默认值描述asElementType(div)自定义元素类型fluidboolean流体布局100% 宽度Row属性类型默认值描述aligntop \| middle \| bottom或响应式值垂直对齐方式asElementType(div)自定义元素类型classPrefixstring(row)CSS 类前缀gutterGutterType或响应式值栅格间距支持水平/垂直justifystart \| end \| center \| space-around \| space-between或响应式值水平分布方式Col属性类型默认值描述asElementType(div)自定义元素类型classPrefixstring(col)CSS 类前缀hiddenboolean 或响应式值是否隐藏栅格offsetnumber 或响应式值栅格左侧间隔格数ordernumber 或响应式值栅格列顺序pullnumber 或响应式值栅格向左移动格数pushnumber 或响应式值栅格向右移动格数spannumber |auto或响应式值占位格数auto时按内容自适应注意6.0 之后推荐使用新式响应属性如span{{ md: 6 }}旧式的xs/smOffset/lgPush等写法已标记为废弃见 src/Grid/types.ts 中的DeprecatedColProps但当前版本仍会兼容处理见 src/Grid/Col.tsx 中的 legacy 分支。小结rsuite 的嵌套栅格是“同一套规则、任意深度复用”的设计每个Row都是独立的 24 列 flex 布局上下文Col的宽度、间距、对齐与响应式行为在各层一致生效。结合官方 nested.md 示例与 src/Grid 下的Grid.tsx、Row.tsx、Col.tsx及样式源码你可以在实际项目中放心地以递归结构组织复杂页面区块同时保持每层布局的可预测性。赞分享前端UI组件【免费下载链接】rsuite A suite of React components .项目地址https://gitcode.com/gh_mirrors/rs/rsuite点击查看免费下载相关推荐rsuite Grid 栅格系统实战从 24 列基础布局到响应式断点rsuite Grid 栅格系统实战从 24 列基础布局到响应式断点 导读 rsuite 的 Grid 组件提供了一套基于 24 列栅格 的响应式布局系统由前端UI组件rsuite Grid 布局组件完全指南24 栅格响应式布局系统实战rsuite Grid 布局组件完全指南24 栅格响应式布局系统实战 本指南以 rsuite 官方文档 Grid 组件文档 https://link.gitc前端UI组件Ant Design Vue Grid 栅格布局系统完整指南24 栅格、Flex 布局与响应式断点实战Ant Design Vue Grid 栅格布局系统完整指南24 栅格、Flex 布局与响应式断点实战 Ant Design Vue 的 Grid栅格是基前端UI组件设计系统上一篇使用 AWS CLI 的 describe-code-review 查询 CodeGuru Reviewer 代码评审状态与元数据下一篇YouTube.js NotificationsMenu 类解析读取与分页遍历 YouTube 通知菜单的完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Keil C51与MDK共存:一套uVision5搞定51和STM32开发 2026/9/29 8:40:13

Keil C51与MDK共存:一套uVision5搞定51和STM32开发

我自己最早是从Keil C51开始接触单片机的,后来转做STM32,在很长一段时间里,我的电脑上同时装着两个Keil,每次换项目都得到开始菜单里翻半天图标,烦得不行。后来才发现,Keil本身就支持在同一台机器、同一个u…

阅读更多 →
AI生成Flutter UI代码实践(二):用Cursor+MCP打通Figma到TaoToken的配置链路 2026/9/29 8:40:13

AI生成Flutter UI代码实践(二):用Cursor+MCP打通Figma到TaoToken的配置链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
LangChain最新实践:用DeepAgents搭建Multi-Agent应用,subagents与skills配置全解析 2026/9/29 8:40:13

LangChain最新实践:用DeepAgents搭建Multi-Agent应用,subagents与skills配置全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
【AI进化论】不写一行代码生成前后端分离项目:Cursor + Sealos 从 prompt 到发布全流程 2026/9/29 8:40:13

【AI进化论】不写一行代码生成前后端分离项目:Cursor + Sealos 从 prompt 到发布全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
虫情测报灯实战手册:从诱虫原理到安装调试与数据应用 2026/9/29 8:40:13

虫情测报灯实战手册:从诱虫原理到安装调试与数据应用

搞农业智能装备这些年,我经手装过的虫情测报灯没有二十台也有十几台了。每次给种粮大户或者植保站装完设备,我都要跟他们强调一句话:这玩意儿不是挂个灯抓虫子玩,它是一台需要认真对待的田间数据采集终端。尤其这两年,…

阅读更多 →
西门子S7-200恒压冷却水系统设计与PID调试实战 2026/9/29 8:40:06

西门子S7-200恒压冷却水系统设计与PID调试实战

一聊到西门子S7-200 PLC,很多人的第一反应是“几十年前的老东西了,早该淘汰了”。但我在现场见过太多项目,最稳的反而是这套老组合。今天要说的恒压循环风机冷却水系统,主控用的就是S7-200,配上威纶通触摸屏&#xff0…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉