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

相关推荐
用户47949283569153 小时前
告别span嵌套地狱:CSS Highlights API重新定义语法高亮
前端·javascript·css
inx1778 小时前
CSS 定位详解:relative、absolute、fixed、sticky 与 static
css
www_stdio9 小时前
CSS 自定义属性(CSS 变量):现代网页开发的利器
css
前端世界10 小时前
ASP.NET 实战:用 CSS 选择器打造一个可搜索、响应式的书籍管理系统
css·后端·asp.net
程序猿_极客10 小时前
【期末网页设计作业】HTML+CSS+JS 香港旅游网站设计与实现 (附源码)
javascript·css·html
进击的野人10 小时前
深入理解 CSS4 新特性:CSS 变量
前端·css
冰暮流星13 小时前
css之flex属性
前端·css
AAA阿giao14 小时前
HTML/CSS/JS 页面渲染机制:揭秘浏览器如何将平凡代码点化为视觉魔法
前端·css·html
进击的野人14 小时前
CSS 定位详解:从文档流到五种定位方式
前端·css