Skip to content

Tailwind CSS - 弹性方向

Tailwind CSS 中的 Flex Direction (弹性方向) 工具类用于控制 flex 容器内 flex 项目的方向。它们决定了项目是水平排列(行)还是垂直排列(列),以及具体的方向。

在 Flexbox 中,项目沿**主轴(main axis)和交叉轴(cross axis)**布局。flex-direction 属性确定了主轴。理解这个概念对于掌握其他 flex 属性(如 justify-content 和 align-items)的工作原理至关重要。

  • flex-row 或 flex-row-reverse:主轴是水平方向。
  • flex-col 或 flex-col-reverse:主轴是垂直方向。

以下是控制 flex 方向的主要工具类:

类名CSS 属性
flex-rowflex-direction: row;
flex-row-reverseflex-direction: row-reverse;
flex-colflex-direction: column;
flex-col-reverseflex-direction: column-reverse;

让我们通过实战来了解这些工具类的用法。对于现代开发而言,推荐使用 npm 等包管理器和 Vite 或 Next.js 等构建工具来设置 Tailwind CSS。下面的示例是 HTML 片段,但假定已经进行了此类设置。

在此示例中,我们展示了所有四种方向工具类。请注意,我们使用 gap-4 在 flex 容器上设置项目间距,这是比为单个 flex 项目添加外边距(margin)更现代的最佳实践。

<!-- 假定已配置现代 Tailwind CSS 开发环境 -->
<div class="space-y-8 p-8 bg-slate-50">
<!-- 1. Flex Row(默认) -->
<div>
<h3 class="font-semibold mb-2">flex-row</h3>
<div class="flex flex-row gap-4 p-4 bg-white rounded-lg shadow">
<div class="bg-sky-500 text-white font-bold p-4 rounded-md">1</div>
<div class="bg-sky-500 text-white font-bold p-4 rounded-md">2</div>
<div class="bg-sky-500 text-white font-bold p-4 rounded-md">3</div>
</div>
</div>
<!-- 2. Flex Row Reverse -->
<div>
<h3 class="font-semibold mb-2">flex-row-reverse</h3>
<div class="flex flex-row-reverse gap-4 p-4 bg-white rounded-lg shadow">
<div class="bg-amber-500 text-white font-bold p-4 rounded-md">1</div>
<div class="bg-amber-500 text-white font-bold p-4 rounded-md">2</div>
<div class="bg-amber-500 text-white font-bold p-4 rounded-md">3</div>
</div>
</div>
<!-- 3. Flex Column -->
<div>
<h3 class="font-semibold mb-2">flex-col</h3>
<div class="flex flex-col gap-4 p-4 bg-white rounded-lg shadow">
<div class="bg-emerald-500 text-white font-bold p-4 rounded-md">1</div>
<div class="bg-emerald-500 text-white font-bold p-4 rounded-md">2</div>
<div class="bg-emerald-500 text-white font-bold p-4 rounded-md">3</div>
</div>
</div>
<!-- 4. Flex Column Reverse -->
<div>
<h3 class="font-semibold mb-2">flex-col-reverse</h3>
<div class="flex flex-col-reverse gap-4 p-4 bg-white rounded-lg shadow">
<div class="bg-rose-500 text-white font-bold p-4 rounded-md">1</div>
<div class="bg-rose-500 text-white font-bold p-4 rounded-md">2</div>
<div class="bg-rose-500 text-white font-bold p-4 rounded-md">3</div>
</div>
</div>
</div>

Tailwind CSS 的一个关键优势是其移动优先的响应式设计系统。通过使用 sm:、md:、lg: 等响应式前缀,您可以轻松地在不同屏幕尺寸下改变 flex 方向。

下面的卡片布局在小屏幕上垂直堆叠内容 (flex-col),并在中等屏幕及更大尺寸上水平排列 (md:flex-row)。

<!-- 响应式 Flex 方向 -->
<div class="max-w-md mx-auto bg-white rounded-xl shadow-md overflow-hidden md:max-w-2xl m-8">
<div class="md:flex">
<!-- 在中等屏幕及以上,父元素为 flex-row。我们需要 flex-shrink-0 来防止图片被挤压。 -->
<div class="md:flex-shrink-0">
<img class="h-48 w-full object-cover md:h-full md:w-48" src="https://picsum.photos/seed/tech/400/300" alt="Modern building architecture">
</div>
<div class="p-8">
<div class="uppercase tracking-wide text-sm text-indigo-500 font-semibold">Case Study</div>
<a href="#" class="block mt-1 text-lg leading-tight font-medium text-black hover:underline">Building a Responsive UI with Tailwind CSS</a>
<p class="mt-2 text-slate-500">Learn how responsive prefixes like `md:flex-row` allow you to create adaptive layouts that work on any device, from mobile phones to desktops.</p>
</div>
</div>
</div>
  • 使用 gap 进行间距设置: 始终优先在 flex 容器上使用 gap-{size} 来创建项目之间的间距。避免为 flex 子元素添加外边距 (m-, mx-, my-),因为 gap 更可预测且更易于管理。
  • 记住主轴: 当您从 flex-row 切换到 flex-col 时,主轴会从水平方向切换到垂直方向。这意味着 justify-* 工具类现在将控制垂直对齐,而 items-* 将控制水平对齐。
  • 与反向排列结合使用: 当使用 flex-row-reverse 或 flex-col-reverse 时,如果您使用 space-* 工具类来设置间距,您可能还需要 space-x-reverse 或 space-y-reverse 工具类。然而,现代的 gap-* 工具类会自动处理这种情况,因此更推荐使用 gap-*。