Skip to content

Tailwind CSS - 网格列起始/结束

Tailwind CSS 现代指南:跨越网格列

Section titled “Tailwind CSS 现代指南:跨越网格列”

Tailwind 的 col-span-*、col-start-* 和 col-end-* 工具类让您能够精确控制元素在 CSS Grid (CSS 网格布局) 中放置和尺寸。它们对于创建非统一的、杂志风格的布局至关重要。

在使用这些工具类之前,了解网格线至关重要。一个包含 N 列的网格会有 N+1 条列线。例如,一个 3 列网格有 4 条垂直线:

Line 1 Line 2 Line 3 Line 4
| [Column 1] | [Column 2] | [Column 3] |

col-start-* 和 col-end-* 工具类引用的是这些网格线编号。

类名CSS 属性描述
col-span-{n}grid-column: span {n} / span {n};使元素跨越 {n} 列。这是最常用的工具类。
col-span-fullgrid-column: 1 / -1;使元素跨越网格的所有列。
col-start-{n}grid-column-start: {n};使元素从网格线 {n} 开始。
col-end-{n}grid-column-end: {n};使元素在网格线 {n} 结束。

让我们构建一个经典的博客布局,包含主内容区域和侧边栏。我们将使用 12 列网格,这是网页设计中的标准做法。

<div class="min-h-screen bg-slate-100 p-8 font-sans">
<div class="container mx-auto">
<!-- 定义一个 12 列网格。间距应用于列之间。 -->
<div class="grid grid-cols-12 gap-8">
<!-- 头部:跨越所有 12 列 -->
<header class="col-span-12 bg-white p-6 rounded-lg shadow-md">
<h1 class="text-4xl font-bold text-slate-800">My Modern Blog</h1>
<p class="text-slate-600">Exploring tech and design with Tailwind CSS.</p>
</header>
<!-- 主内容:在中等屏幕及以上跨越 8 列 -->
<main class="col-span-12 md:col-span-8 bg-white p-6 rounded-lg shadow-md">
<h2 class="text-2xl font-semibold mb-4">Article Title</h2>
<p class="text-slate-700 leading-relaxed">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. ...
</p>
</main>
<!-- 侧边栏:在中等屏幕及以上跨越 4 列 -->
<aside class="col-span-12 md:col-span-4 bg-white p-6 rounded-lg shadow-md">
<h3 class="text-xl font-semibold mb-4">About the Author</h3>
<p class="text-slate-700">
A brief bio about the author goes here.
</p>
</aside>
<!-- 底部:跨越所有 12 列,并为演示明确指定了起始和结束位置 -->
<footer class="col-start-1 col-end-13 bg-white p-6 rounded-lg shadow-md text-center text-slate-500">
&copy; 2024 My Modern Blog. All rights reserved.
</footer>
</div>
</div>
</div>
  • 可视化网格: 使用浏览器的开发者工具(大多数浏览器都有网格检查器)来查看网格线、间距以及元素的放置方式。这是调试列跨越问题的最佳方法。
  • 响应式跨越: 始终遵循移动优先原则。默认情况下,一个元素跨越一列(grid-cols-12 上的 col-span-12 实际上是全宽)。使用 md:col-span-8 等响应式前缀来在更大屏幕上创建多列布局。
  • col-span 通常足够: 对于大多数布局,您只需要 col-span-{n}。在需要有意留出空白或元素重叠的更复杂布局中,才使用 col-start-* 和 col-end-*。