Tailwind CSS Grid #

网格容器 #

启用 Grid #

html
<!-- 块级网格容器 -->
<div class="grid">
  <div>项目 1</div>
  <div>项目 2</div>
</div>

<!-- 内联网格容器 -->
<div class="inline-grid">
  <div>项目 1</div>
  <div>项目 2</div>
</div>

网格列(Grid Template Columns) #

固定列数 #

html
<!-- 1 列 -->
<div class="grid grid-cols-1">
  <div>项目</div>
</div>

<!-- 2 列 -->
<div class="grid grid-cols-2">
  <div>项目 1</div>
  <div>项目 2</div>
</div>

<!-- 3 列 -->
<div class="grid grid-cols-3">
  <div>项目 1</div>
  <div>项目 2</div>
  <div>项目 3</div>
</div>

<!-- 4/5/6/12 列 -->
<div class="grid grid-cols-4">...</div>
<div class="grid grid-cols-5">...</div>
<div class="grid grid-cols-6">...</div>
<div class="grid grid-cols-12">...</div>

响应式列数 #

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

无换行 #

html
<div class="grid grid-flow-col">
  <div>项目 1</div>
  <div>项目 2</div>
  <div>项目 3</div>
</div>

自适应列 #

html
<!-- 自动填充,最小 200px -->
<div class="grid grid-cols-[repeat(auto-fill,minmax(200px,1fr))]">
  <div>项目</div>
</div>

<!-- 自动适应,最小 200px -->
<div class="grid grid-cols-[repeat(auto-fit,minmax(200px,1fr))]">
  <div>项目</div>
</div>

任意列宽 #

html
<!-- 自定义列宽 -->
<div class="grid grid-cols-[200px_1fr_200px]">
  <div>左侧栏</div>
  <div>主内容</div>
  <div>右侧栏</div>
</div>

<!-- 混合单位 -->
<div class="grid grid-cols-[1fr_2fr_1fr]">
  <div>1 份</div>
  <div>2 份</div>
  <div>1 份</div>
</div>

网格行(Grid Template Rows) #

固定行数 #

html
<!-- 1 行 -->
<div class="grid grid-rows-1">
  <div>项目</div>
</div>

<!-- 2/3/4/5/6 行 -->
<div class="grid grid-rows-2">...</div>
<div class="grid grid-rows-3">...</div>
<div class="grid grid-rows-4">...</div>
<div class="grid grid-rows-5">...</div>
<div class="grid grid-rows-6">...</div>

任意行高 #

html
<div class="grid grid-rows-[auto_1fr_auto] min-h-screen">
  <header>头部</header>
  <main>主内容</main>
  <footer>底部</footer>
</div>

网格流(Grid Auto Flow) #

html
<!-- 按行排列(默认) -->
<div class="grid grid-flow-row grid-cols-3">
  <div>项目</div>
</div>

<!-- 按列排列 -->
<div class="grid grid-flow-col grid-rows-3">
  <div>项目</div>
</div>

<!-- 稀疏排列 -->
<div class="grid grid-flow-dense">
  <div>项目</div>
</div>

<!-- 按行稀疏排列 -->
<div class="grid grid-flow-row-dense">
  <div>项目</div>
</div>

<!-- 按列稀疏排列 -->
<div class="grid grid-flow-col-dense">
  <div>项目</div>
</div>

跨列(Grid Column Span) #

html
<!-- 跨 1 列(默认) -->
<div class="col-span-1">跨 1 列</div>

<!-- 跨 2 列 -->
<div class="col-span-2">跨 2 列</div>

<!-- 跨 3 列 -->
<div class="col-span-3">跨 3 列</div>

<!-- 跨所有列 -->
<div class="col-span-full">跨所有列</div>

指定起始和结束 #

html
<!-- 从第 1 列开始,到第 3 列结束 -->
<div class="col-start-1 col-end-3">跨 2 列</div>

<!-- 从第 2 列开始,跨 3 列 -->
<div class="col-start-2 col-span-3">从第 2 列开始跨 3 列</div>

<!-- 自动 -->
<div class="col-auto">自动</div>

跨行(Grid Row Span) #

html
<!-- 跨 1 行(默认) -->
<div class="row-span-1">跨 1 行</div>

<!-- 跨 2 行 -->
<div class="row-span-2">跨 2 行</div>

<!-- 跨 3 行 -->
<div class="row-span-3">跨 3 行</div>

<!-- 跨所有行 -->
<div class="row-span-full">跨所有行</div>

指定起始和结束 #

html
<!-- 从第 1 行开始,到第 3 行结束 -->
<div class="row-start-1 row-end-3">跨 2 行</div>

<!-- 从第 2 行开始,跨 3 行 -->
<div class="row-start-2 row-span-3">从第 2 行开始跨 3 行</div>

网格区域(Grid Template Areas) #

html
<style>
  .grid-layout {
    grid-template-areas:
      "header header header"
      "sidebar main main"
      "footer footer footer";
  }
</style>

<div class="grid grid-cols-3 grid-rows-3">
  <header class="[grid-area:header]">头部</header>
  <aside class="[grid-area:sidebar]">侧边栏</aside>
  <main class="[grid-area:main]">主内容</main>
  <footer class="[grid-area:footer]">底部</footer>
</div>

网格对齐 #

项目对齐(Justify Items) #

控制所有项目在行方向的对齐:

html
<!-- 起点(默认) -->
<div class="grid justify-items-start">
  <div>项目</div>
</div>

<!-- 终点 -->
<div class="grid justify-items-end">
  <div>项目</div>
</div>

<!-- 居中 -->
<div class="grid justify-items-center">
  <div>项目</div>
</div>

<!-- 拉伸 -->
<div class="grid justify-items-stretch">
  <div>项目</div>
</div>

项目对齐(Align Items) #

控制所有项目在列方向的对齐:

html
<!-- 起点 -->
<div class="grid items-start">
  <div>项目</div>
</div>

<!-- 终点 -->
<div class="grid items-end">
  <div>项目</div>
</div>

<!-- 居中 -->
<div class="grid items-center">
  <div>项目</div>
</div>

<!-- 拉伸(默认) -->
<div class="grid items-stretch">
  <div>项目</div>
</div>

内容对齐(Justify Content) #

控制整个网格在容器中的行方向对齐:

html
<div class="grid justify-start">起点</div>
<div class="grid justify-end">终点</div>
<div class="grid justify-center">居中</div>
<div class="grid justify-between">两端</div>
<div class="grid justify-around">环绕</div>
<div class="grid justify-evenly">均匀</div>

内容对齐(Align Content) #

控制整个网格在容器中的列方向对齐:

html
<div class="grid content-start">起点</div>
<div class="grid content-end">终点</div>
<div class="grid content-center">居中</div>
<div class="grid content-between">两端</div>
<div class="grid content-around">环绕</div>
<div class="grid content-evenly">均匀</div>

单个项目对齐 #

html
<!-- 行方向 -->
<div class="justify-self-auto">自动</div>
<div class="justify-self-start">起点</div>
<div class="justify-self-end">终点</div>
<div class="justify-self-center">居中</div>
<div class="justify-self-stretch">拉伸</div>

<!-- 列方向 -->
<div class="self-auto">自动</div>
<div class="self-start">起点</div>
<div class="self-end">终点</div>
<div class="self-center">居中</div>
<div class="self-stretch">拉伸</div>

间隙(Gap) #

html
<!-- 统一间隙 -->
<div class="grid grid-cols-3 gap-4">
  <div>项目</div>
</div>

<!-- 行间隙 -->
<div class="grid grid-cols-3 gap-x-4">
  <div>项目</div>
</div>

<!-- 列间隙 -->
<div class="grid grid-cols-3 gap-y-4">
  <div>项目</div>
</div>

自动轨道(Grid Auto Columns/Rows) #

html
<!-- 自动列宽 -->
<div class="grid auto-cols-auto">自动</div>
<div class="grid auto-cols-min">最小内容</div>
<div class="grid auto-cols-max">最大内容</div>
<div class="grid auto-cols-fr">1fr</div>

<!-- 自动行高 -->
<div class="grid auto-rows-auto">自动</div>
<div class="grid auto-rows-min">最小内容</div>
<div class="grid auto-rows-max">最大内容</div>
<div class="grid auto-rows-fr">1fr</div>
<div class="grid auto-rows-[100px]">100px</div>

实战示例 #

基本网格布局 #

html
<div class="grid grid-cols-3 gap-4">
  <div class="bg-blue-500 p-4">项目 1</div>
  <div class="bg-blue-500 p-4">项目 2</div>
  <div class="bg-blue-500 p-4">项目 3</div>
  <div class="bg-blue-500 p-4">项目 4</div>
  <div class="bg-blue-500 p-4">项目 5</div>
  <div class="bg-blue-500 p-4">项目 6</div>
</div>

响应式卡片网格 #

html
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6">
  <div class="bg-white rounded-lg shadow p-6">卡片 1</div>
  <div class="bg-white rounded-lg shadow p-6">卡片 2</div>
  <div class="bg-white rounded-lg shadow p-6">卡片 3</div>
  <div class="bg-white rounded-lg shadow p-6">卡片 4</div>
</div>

圣杯布局 #

html
<div class="grid grid-cols-[200px_1fr_200px] grid-rows-[auto_1fr_auto] min-h-screen">
  <header class="col-span-3 bg-gray-100 p-4">头部</header>
  <aside class="bg-gray-200 p-4">左侧栏</aside>
  <main class="bg-white p-4">主内容</main>
  <aside class="bg-gray-200 p-4">右侧栏</aside>
  <footer class="col-span-3 bg-gray-100 p-4">底部</footer>
</div>

仪表盘布局 #

html
<div class="grid grid-cols-4 grid-rows-[auto_repeat(3,1fr)] gap-4 min-h-screen">
  <header class="col-span-4 bg-white shadow p-4">头部</header>
  <aside class="row-span-3 bg-gray-100 p-4">侧边栏</aside>
  <main class="col-span-3 bg-white p-4">主内容</main>
  <div class="col-span-3 bg-gray-50 p-4">底部区域</div>
</div>

图片画廊 #

html
<div class="grid grid-cols-4 grid-rows-2 gap-2 h-96">
  <div class="col-span-2 row-span-2 bg-gray-300">大图</div>
  <div class="bg-gray-300">小图 1</div>
  <div class="bg-gray-300">小图 2</div>
  <div class="bg-gray-300">小图 3</div>
  <div class="bg-gray-300">小图 4</div>
</div>

表单布局 #

html
<form class="grid grid-cols-2 gap-4">
  <div class="col-span-2">
    <label>标题</label>
    <input class="w-full border rounded p-2">
  </div>
  <div>
    <label>名字</label>
    <input class="w-full border rounded p-2">
  </div>
  <div>
    <label>姓氏</label>
    <input class="w-full border rounded p-2">
  </div>
  <div class="col-span-2">
    <label>描述</label>
    <textarea class="w-full border rounded p-2"></textarea>
  </div>
  <div class="col-span-2">
    <button class="bg-blue-500 text-white px-4 py-2 rounded">提交</button>
  </div>
</form>

自适应卡片 #

html
<div class="grid grid-cols-[repeat(auto-fit,minmax(280px,1fr))] gap-6">
  <div class="bg-white rounded-lg shadow p-6">卡片 1</div>
  <div class="bg-white rounded-lg shadow p-6">卡片 2</div>
  <div class="bg-white rounded-lg shadow p-6">卡片 3</div>
</div>

下一步 #

掌握 Grid 后,继续学习 背景 了解背景样式!

最后更新:2026-03-28