Skip to content

Tailwind CSS - 顺序

Tailwind CSS 中的 顺序(Order) 工具类用于控制 flex 和 grid 项目的视觉顺序,独立于它们在 HTML 源代码中的顺序。这是创建响应式和自适应布局的基本工具。

order-* 工具类将 CSS 的 order 属性应用于元素。默认情况下,flex 和 grid 项目的 order 值为 0,它们按照在 DOM 中定义的顺序显示。通过分配不同的 order 值,你可以重新排列它们。

类名CSS 属性
order-1order: 1;
order-2order: 2;
……
order-12order: 12;
order-firstorder: -9999;
order-lastorder: 9999;
order-noneorder: 0;

关键概念:

  • order 值较小的项目会优先显示。
  • order-first 使用一个非常小的负数来确保项目始终排在首位。
  • order-last 使用一个非常大的数来确保项目始终排在末尾。
  • order-none 将顺序重置为默认行为(0)。

在此示例中,‘Item 2’ 的 HTML 在 ‘Item 1’ 之后,但 order-first 类在视觉上将其放置在 flex 容器的开头。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Basic Order Example</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="p-8 bg-slate-100">
<h2 class="text-xl font-bold mb-4">Item Reordering</h2>
<div class="flex flex-wrap gap-4 text-white font-bold">
<!-- 这个项目在视觉上排在第二位 -->
<div class="p-6 rounded-lg bg-blue-500 w-32 text-center">
Item 1 (DOM Order: 1st)
</div>
<!-- 由于 order-first,这个项目在视觉上排在第一位 -->
<div class="order-first p-6 rounded-lg bg-violet-500 w-32 text-center">
Item 2 (DOM Order: 2nd)
</div>
<!-- 由于 order-last,这个项目在视觉上排在最后一位 -->
<div class="order-last p-6 rounded-lg bg-red-500 w-32 text-center">
Item 3 (DOM Order: 3rd)
</div>
<!-- 这个项目的顺序未改变 -->
<div class="p-6 rounded-lg bg-emerald-500 w-32 text-center">
Item 4 (DOM Order: 4th)
</div>
</div>
</body>
</html>

order 工具类的真正强大之处在于与响应式前缀(如 sm:、md:、lg:)结合使用时。一个常见的模式是在移动端和桌面端屏幕上具有不同的内容顺序。

在下面的示例中,在小屏幕上,文本内容首先出现。在中等屏幕及以上 (md:),图片首先出现。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Responsive Ordering</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="p-4 md:p-8">
<div class="max-w-4xl mx-auto grid grid-cols-1 md:grid-cols-2 gap-8 items-center">
<!-- 文本内容 -->
<div class="order-2 md:order-1">
<h1 class="text-3xl font-bold text-slate-800">Responsive Product Title</h1>
<p class="mt-4 text-slate-600">在移动端,这段文本首先出现,便于快速阅读。在桌面端,图片出现在左侧,这是一种更传统的布局。</p>
</div>
<!-- 图片 -->
<div class="order-1 md:order-2">
<img src="https://placehold.co/600x400/3b82f6/ffffff" alt="Placeholder Image" class="rounded-lg shadow-lg">
</div>
</div>
</body>
</html>
  • 可访问性优先: 请注意,改变视觉顺序并不会改变 DOM 顺序。屏幕阅读器和键盘导航仍将遵循源代码顺序。即使视觉顺序不同,也要确保 DOM 顺序提供逻辑流。
  • 与 Flexbox 和 Grid 结合使用: order 工具类只对 flex 或 grid 容器的直接子元素有效。
  • 保持简单: 尽管你可以创建复杂的重新排序,但通常最好让布局尽可能简单。对于简单的反转,可以考虑使用 flex-row-reverse 或 flex-col-reverse,而不是手动排列每个项目。