
如何用styled-css-grid打造响应式网格auto-fitminmax一行代码搞定自适应布局【免费下载链接】styled-css-grid A tiny CSS grid layout for React项目地址: https://gitcode.com/gh_mirrors/st/styled-css-gridstyled-css-grid 是一个专为 React 打造的轻量级响应式网格布局库体积仅约 2kb。它基于 CSS Grid 和 styled-components 构建借助 auto-fit 与 minmax 这两个关键能力只需一行代码就能搞定自适应布局让卡片、图片墙等响应式网格开发变得又快又简单 什么是 styled-css-grid轻量级 CSS Grid 布局工具styled-css-grid 的核心思想很简单把 CSS Grid 的繁琐属性封装成两个组件——Grid网格容器和Cell单元格由你熟悉的 props 来控制布局。它的主要特点极小压缩后仅约 2kb几乎不增加任何负担基于 styled-components天然支持 className、主题等能力响应式友好columns支持传入任意 CSS 值直接解锁 auto-fit、minmax 全部威力自带 TypeScript 类型仓库根目录的index.d.ts提供了完整的 props 类型定义核心实现分别在 Grid 容器 和 Cell 单元格 两个文件lib/Grid.js、lib/Cell.js代码量极少非常适合阅读源码。快速安装两步接入 React 项目先安装依赖。styled-css-grid 需要 React 和 styled-components 作为 peer 依赖yarn add styled-css-grid如果要从源码查看可克隆仓库git clone https://gitcode.com/gh_mirrors/st/styled-css-grid基础用法Grid Cell 快速上手一个最基本的 2 列网格长这样示例来自README.mdimport React from react; import { Grid, Cell } from styled-css-grid; const MyGrid () ( Grid columns{2} gap2px Cellfoo/Cell Cell height{2}bar/Cell Cell width{2}baz/Cell /Grid );注意几个细节传数字时columns{2}是简写等价于grid-template-columns: repeat(2, 1fr)默认值是 12 列gap控制单元格间距默认8pxCell的width、height以格为单位height{2}表示跨 2 行一行代码实现响应式网格auto-fit minmax 这是全篇的重点。当columns传入字符串时它会被原样透传给grid-template-columns属性于是你可以直接写出Grid columnsrepeat(auto-fit, minmax(120px, 1fr)) CellA/Cell CellB/Cell ... /Grid这一行声明的含义minmax(120px, 1fr)每列最小 120px、最大弹性拉伸保证内容不会被挤扁auto-fit浏览器自动决定能放下多少列放不下就换行效果就是宽屏时一屏排 8 个卡片手机竖屏时自动变成 1 列——完全不用写媒体查询。官网演示中该示例的完整代码位于website/components/sections/Responsive.js。 小技巧想要留空不填充的自动换行可以把auto-fit换成auto-fill两者是响应式布局中最常用的搭档。常用属性速查表组件属性作用默认值Gridcolumns列数数字或完整的 grid-template-columns 值字符串12Gridgap/columnGap/rowGap单元格间距8pxGridminRowHeight每行最小高度20pxGridflow流动方向可设为row dense实现密集填充rowGridareas网格区域如[a a, b c]无GridjustifyContent/alignContent网格内容对齐无Cellwidth/height跨列数 / 跨行数1Cellleft/top起始列 / 起始行无Cellmiddle/center垂直 / 水平居中内容falseCellarea指定所在网格区域无属性定义可参考类型声明文件index.d.tsIGridProps与ICellProps一目了然。密集排列用 flowrow dense 消除空隙如果网格中有宽有窄的单元格普通流式排列可能留下空隙。给Grid加上flowrow dense浏览器就会自动把小单元格回填到空隙中官方示例见website/components/sections/Dense.jsGrid flowrow dense columns{4} Cell width{2} height{1}A/Cell Cell width{1} height{2}B/Cell ... /Grid浏览器兼容性现在能上生产吗CSS Grid 如今已被所有主流浏览器完整支持参考下图的兼容性一览来自官网截图简单结论不需要支持 IE 时可以放心在生产环境使用需要兼容旧版 IE 时建议用传统布局兜底或评估 polyfill 方案常见问题小贴士 为什么列宽没有撑满检查父容器是否有宽度限制1fr需要依赖容器宽度计算行高不够高调大minRowHeight它决定了grid-auto-rows的最小行高想让某格跨越指定位置用left/top定位起点width/height控制跨距内容垂直居中给Cell加middle水平居中加center小结styled-css-grid 用最少的 API 覆盖了 CSS Grid 的核心场景数字列数做传统网格字符串columns解锁 auto-fit minmax 响应式网格再配合gap、areas、flow等属性足以应付绝大多数布局需求。如果你想用一行代码搞定 React 响应式网格布局它就是那个足够轻、又足够灵活的選擇 ✅【免费下载链接】styled-css-grid A tiny CSS grid layout for React项目地址: https://gitcode.com/gh_mirrors/st/styled-css-grid创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考