Skip to content

Tailwind CSS - Background Size

# Modern Guide to Tailwind CSS: Background Size

Section titled “# Modern Guide to Tailwind CSS: Background Size”

The background-size utilities in Tailwind CSS control how a background image is scaled within its container. This is essential for creating responsive and visually appealing designs.

Understanding the difference between bg-cover and bg-contain is key.

  • bg-cover: Fills the entire container. The browser scales the image to be as large as possible while ensuring it completely covers the background area. This might mean some parts of the image get cropped if the aspect ratios don’t match.
  • bg-contain: Fits within the container. The browser scales the image to be as large as possible while ensuring the entire image is visible. This might leave empty space (letterboxing) if the aspect ratios don’t match.
  • bg-auto: Displays the image at its natural size without any scaling.
ClassCSS PropertiesPrimary Use Case
bg-autobackground-size: auto;Displaying small, repeating patterns at their original size.
bg-coverbackground-size: cover;Full-bleed background images, hero sections.
bg-containbackground-size: contain;Displaying logos or icons where the full image must be visible.

This example uses a non-square image in square containers to clearly demonstrate how each utility behaves.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Modern Background Size Example</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="bg-slate-100 dark:bg-slate-900 p-8 font-sans">
<h1 class="text-3xl font-bold text-slate-900 dark:text-white mb-8 text-center">Background Size Comparison</h1>
<div class="grid md:grid-cols-3 gap-8 max-w-6xl mx-auto">
<!-- 1. bg-cover -->
<div>
<h2 class="font-bold text-xl mb-3 text-slate-800 dark:text-slate-200 text-center">`bg-cover`</h2>
<div class="h-64 w-full bg-slate-300 rounded-lg shadow-md bg-cover bg-center bg-no-repeat" style="background-image:url('https://images.unsplash.com/photo-1566275529824-cca6d008f3da?q=80&w=1974&auto=format&fit=crop')"></div>
<p class="mt-2 text-center text-sm text-slate-600 dark:text-slate-400">Fills the container; sides are cropped.</p>
</div>
<!-- 2. bg-contain -->
<div>
<h2 class="font-bold text-xl mb-3 text-slate-800 dark:text-slate-200 text-center">`bg-contain`</h2>
<div class="h-64 w-full bg-slate-300 rounded-lg shadow-md bg-contain bg-center bg-no-repeat" style="background-image:url('https://images.unsplash.com/photo-1566275529824-cca6d008f3da?q=80&w=1974&auto=format&fit=crop')"></div>
<p class="mt-2 text-center text-sm text-slate-600 dark:text-slate-400">Fits inside; creates 'letterbox' space.</p>
</div>
<!-- 3. bg-auto -->
<div>
<h2 class="font-bold text-xl mb-3 text-slate-800 dark:text-slate-200 text-center">`bg-auto`</h2>
<div class="h-64 w-full bg-slate-300 rounded-lg shadow-md bg-auto bg-center bg-no-repeat" style="background-image:url('https://images.unsplash.com/photo-1566275529824-cca6d008f3da?q=80&w=1974&auto=format&fit=crop')"></div>
<p class="mt-2 text-center text-sm text-slate-600 dark:text-slate-400">Original size; overflows the container.</p>
</div>
</div>
</body>
</html>
  • Combining with Position: Background size works hand-in-hand with background position utilities (bg-center, bg-top, bg-left-bottom, etc.). When using bg-cover, you can use position classes to control which part of the image remains visible. For example, bg-cover bg-top ensures the top of the image is never cropped.
  • Arbitrary Values: With a proper build setup, you can use arbitrary values for complete control: bg-[length:50%_100%] would make the background width 50% of the container and height 100%. This is useful for special effects.
  • Responsive Sizing: Apply different background sizes at different breakpoints. For example, you might use bg-contain on mobile to show a full logo, but switch to md:bg-cover on desktop for a more immersive feel.

For bg-cover, use an image that is large enough to look sharp on high-resolution displays, but not so large that it hurts your page load times. Use modern image formats like WebP or AVIF and tools to compress your images without sacrificing too much quality.