Tailwind CSS的grid布局

在 Tailwind CSS 中,grid 布局是基于原生 CSS Grid 布局的工具类实现,目的是通过预定义的类名快速构建网格布局,无需编写原生 CSS 代码。它保留了 CSS Grid 的核心功能(如网格行列划分、项目定位、对齐方式等),但简化了使用方式。

一、核心概念:与原生 CSS Grid 对应

Tailwind 的 grid 类完全映射原生 CSS Grid 的属性,例如:

  • 开启网格布局:grid 对应 display: grid
  • 定义列数:grid-cols-3 对应 grid-template-columns: repeat(3, minmax(0, 1fr))
  • 定义行数:grid-rows-2 对应 grid-template-rows: repeat(2, minmax(0, 1fr))
  • 项目跨列:col-span-2 对应 grid-column: span 2 / span 2
  • 项目跨行:row-span-3 对应 grid-row: span 3 / span 3

二、常用 Tailwind Grid 工具类

1. 开启网格布局
  • grid:将容器设置为网格容器(display: grid
  • inline-grid:将容器设置为行内网格容器(display: inline-grid

html

预览

复制代码
<div class="grid"> <!-- 网格容器 -->
  <div>项目1</div>
  <div>项目2</div>
</div>
2. 定义列数(grid-cols-*

通过 grid-cols-{n} 定义网格的列数,n 可以是数字(1-12,默认)或自定义值,默认每列宽度平均分配(1fr)。

html

预览

复制代码
<!-- 3列网格,每列宽度相等 -->
<div class="grid grid-cols-3 gap-4">
  <div>列1</div>
  <div>列2</div>
  <div>列3</div>
</div>
  • 特殊值:
    • grid-cols-none:不定义列(默认由内容自动生成)
    • 自定义列宽:通过 grid-cols-[200px_1fr_30%] 定义非平均列宽(使用任意值语法 []
3. 定义行数(grid-rows-*

类似列数,grid-rows-{n} 定义网格的行数,n 为数字或自定义值。

html

预览

复制代码
<!-- 2行网格,每行高度相等 -->
<div class="grid grid-rows-2 gap-4 h-40">
  <div>行1</div>
  <div>行2</div>
</div>
4. 网格间距(gap-*

控制网格项目之间的间距(包括行间距和列间距):

  • gap-{size}:同时设置行间距和列间距(如 gap-4 对应 gap: 1rem
  • row-gap-{size}:仅设置行间距
  • col-gap-{size}:仅设置列间距

html

预览

复制代码
<div class="grid grid-cols-3 gap-2 row-gap-4">
  <!-- 列间距 0.5rem,行间距 1rem -->
</div>
5. 项目跨列 / 跨行(col-span-* / row-span-*

控制网格项目占据的列数或行数:

  • col-span-{n}:跨 n 列(如 col-span-2 占 2 列)
  • row-span-{n}:跨 n 行(如 row-span-3 占 3 行)

html

预览

复制代码
<div class="grid grid-cols-3 gap-4">
  <div class="col-span-2">占2列</div>
  <div>占1列</div>
  <div class="row-span-2">占2行</div>
  <div>普通项目</div>
</div>
6. 网格对齐(与原生 Grid 对齐属性对应)
  • 主轴对齐(justify-items):控制项目在单元格内的水平对齐

    • justify-items-start(左对齐)、justify-items-center(居中)、justify-items-end(右对齐)
  • 交叉轴对齐(align-items):控制项目在单元格内的垂直对齐

    • align-items-start(顶部对齐)、align-items-center(居中)、align-items-end(底部对齐)
  • 内容对齐(针对网格容器内的整体内容)

    • justify-content-center(主轴内容居中)、align-content-center(交叉轴内容居中)

html

预览

复制代码
<div class="grid grid-cols-3 h-40 justify-items-center items-center">
  <div>水平垂直都居中</div>
</div>
7. 响应式网格

结合 Tailwind 的断点前缀(如 sm:md:lg:),可在不同屏幕尺寸下切换网格布局:

html

预览

复制代码
<!-- 移动端1列,平板3列,桌面4列 -->
<div class="grid grid-cols-1 md:grid-cols-3 lg:grid-cols-4 gap-4">
  <div>项目</div>
  <!-- ... -->
</div>

三、与原生 CSS Grid 的区别

  1. 使用方式 :Tailwind 用类名(如 grid-cols-3)代替原生 CSS 代码(grid-template-columns: repeat(3, 1fr)),无需离开 HTML 编写样式。
  2. 灵活性 :原生 CSS 可完全自定义网格(如 grid-template-columns: 200px 1fr 30%),Tailwind 可通过 grid-cols-[200px_1fr_30%] 实现相同效果(任意值语法)。
  3. 效率:Tailwind 预定义了常用网格配置(如 1-12 列),适合快速开发;原生 CSS 适合复杂自定义场景。

总结

Tailwind 的 Grid 布局是原生 CSS Grid 的 "语法糖",通过工具类简化了网格布局的实现,同时保留了其强大的功能。适合快速构建响应式网格(如卡片布局、画廊、表单等),配合断点类可轻松适配不同设备。

相关推荐
WZl1 天前
在传统的HTML、CSS与JavaScript项目中加入vue
javascript·css·vue.js·html
无·糖1 天前
大学生HTML期末大作业——HTML+CSS+JavaScript人物明星(周杰伦)
javascript·css·html·课程设计·大学生·大作业·web网页设计作业
parade岁月1 天前
理解 CSS backface-visibility:卡片翻转效果背后的属性
前端·css
QianhangQianping1 天前
前端技术迭代深析:从 CSS 布局到状态管理的进化之路
前端·css
k***21601 天前
【HTML+CSS】使用HTML与后端技术连接数据库
css·数据库·html
ycgg1 天前
别再只用 --xxx!CSS @property 解锁自定义属性的「高级玩法」
前端·css
软件技术NINI1 天前
html css js网页制作成品——鹿晗html+css+js 4页附源码
javascript·css·html
Z_Wonderful1 天前
主题切换(1):css变量的使用(:root)
前端·javascript·css
亮子AI1 天前
【CSS】如何选择父级元素?
前端·css