Skip to content

Tailwind CSS - 对象适配

Tailwind CSS 中的 object-fit 实用工具控制替换元素(如 <img> 或 <video>)如何调整大小以适应其容器。这对于保持宽高比和防止媒体内容失真至关重要。

这些是控制 object-fit 属性的核心实用工具类。

类名CSS 属性行为
object-containobject-fit: contain;在保留宽高比的同时,调整内容大小以适应容器。可能会出现黑边。
object-coverobject-fit: cover;填充整个容器,保留宽高比,但如果需要则裁剪内容。
object-fillobject-fit: fill;拉伸内容以填充容器,忽略其原始宽高比。通常会导致失真。
object-noneobject-fit: none;以其原始尺寸显示内容,忽略容器的尺寸。内容可能会被裁剪。
object-scale-downobject-fit: scale-down;行为类似于 object-contain 或 object-none,以内容尺寸较小者为准。

理解 object-fit 的最佳方式是并排查看所有变体。以下示例创建了一个画廊,其中每张图片都使用不同的 object-fit 实用工具,展示它们各自独特的行为。所有图片都位于尺寸相同的容器中。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Object Fit Comparison</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="bg-gray-100 p-8">
<main class="max-w-6xl mx-auto">
<h1 class="text-3xl font-bold mb-8 text-center text-gray-800">Object Fit Gallery</h1>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
<!-- 对象适应:contain -->
<figure class="bg-white p-4 rounded-lg shadow-md">
<div class="w-full h-64 bg-black/10 rounded overflow-hidden">
<img src="https://placehold.co/600x400/3498db/ffffff" alt="A wide placeholder image" class="w-full h-full object-contain">
</div>
<figcaption class="mt-4 text-center font-semibold">`object-contain`</figcaption>
</figure>
<!-- 对象适应:cover -->
<figure class="bg-white p-4 rounded-lg shadow-md">
<div class="w-full h-64 bg-black/10 rounded overflow-hidden">
<img src="https://placehold.co/600x400/2ecc71/ffffff" alt="A wide placeholder image" class="w-full h-full object-cover">
</div>
<figcaption class="mt-4 text-center font-semibold">`object-cover`</figcaption>
</figure>
<!-- 对象适应:fill -->
<figure class="bg-white p-4 rounded-lg shadow-md">
<div class="w-full h-64 bg-black/10 rounded overflow-hidden">
<img src="https://placehold.co/600x400/e74c3c/ffffff" alt="A wide placeholder image" class="w-full h-full object-fill">
</div>
<figcaption class="mt-4 text-center font-semibold">`object-fill`</figcaption>
</figure>
<!-- 对象适应:none -->
<figure class="bg-white p-4 rounded-lg shadow-md">
<div class="w-full h-64 bg-black/10 rounded overflow-hidden">
<img src="https://placehold.co/600x400/f1c40f/ffffff" alt="A wide placeholder image" class="w-full h-full object-none">
</div>
<figcaption class="mt-4 text-center font-semibold">`object-none`</figcaption>
</figure>
<!-- 对象适应:scale-down -->
<figure class="bg-white p-4 rounded-lg shadow-md">
<div class="w-full h-64 bg-black/10 rounded overflow-hidden">
<img src="https://placehold.co/600x400/9b59b6/ffffff" alt="A wide placeholder image" class="w-full h-full object-scale-down">
</div>
<figcaption class="mt-4 text-center font-semibold">`object-scale-down`</figcaption>
</figure>
<!-- 带位置的对象适应:cover -->
<figure class="bg-white p-4 rounded-lg shadow-md">
<div class="w-full h-64 bg-black/10 rounded overflow-hidden">
<img src="https://placehold.co/600x400/1abc9c/ffffff" alt="A wide placeholder image" class="w-full h-full object-cover object-top">
</div>
<figcaption class="mt-4 text-center font-semibold">`object-cover object-top`</figcaption>
</figure>
</div>
</main>
</body>
</html>
  • 何时使用 object-cover:这是 UI 卡片、英雄背景和头像最常见的选择。它确保容器始终被图片填充,提供整洁一致的外观,即使部分图片被裁剪。
  • 何时使用 object-contain:当完整显示图片至关重要时使用此选项,例如在产品画廊、标志展示或灯箱预览中。
  • 避免使用 object-fill:除非你有特定的理由去扭曲图片,否则几乎总是应该避免使用 object-fill。
  • 无障碍优先:始终在你的 <img> 标签上包含描述性的 alt 属性,以供屏幕阅读器使用,并防止图片加载失败。
  • 使用 object-position 控制裁剪:使用 object-cover 时,可以通过 object-center、object-top、object-bottom-left 等对象位置实用工具来控制图像的哪些部分可见。上面示例中的最后一个卡片展示了 object-top。