Kombai Logo

Tailwind CSS Backdrop Grayscale

Backdrop Grayscale applies a grayscale filter to the backdrop, which refers to the content visible behind an element. Tailwind CSS provides backdrop-grayscale and backdrop-grayscale-0 utilities to implement and control backdrop grayscale.

In this guide, we’ll dive deep into how to work with backdrop grayscale in Tailwind CSS, covering its basic implementation, conditional states, responsive behavior, and customization.

ClassPropertiesExample
backdrop-grayscale-0backdrop-filter: grayscale(0);<div className="backdrop-grayscale-0"></div>
backdrop-grayscalebackdrop-filter: grayscale(100%);<div className="backdrop-grayscale"></div>

Overview of Backdrop Grayscale

Adding the Backdrop Grayscale

To create a grayscale effect on the backdrop of an element, use the backdrop-grayscale utility:

This is a live editor. Play around with it!
export default function App() {
  return <h1>Hello world</h1>
}

Resetting Backdrop Filters

To remove the backdrop grayscale filter from your element, use the backdrop-grayscale-0 utility. If you want to remove all the applied backdrop filters, including the grayscale filter, use the backdrop-filter-none utility, which disables all backdrop transformations.

This is a live editor. Play around with it!
export default function App() {
  return <h1>Hello world</h1>
}

States and Responsiveness

Hover and Focus States

In certain interactive designs, you may want the backdrop grayscale effect to activate only during hover, focus, or other states. Use Tailwind’s state modifiers like- hover, focus, etc. to apply the utility only when these states are active.

This is a live editor. Play around with it!
export default function App() {
  return <h1>Hello world</h1>
}

Breakpoint Modifiers

Tailwind CSS also allows you to control backdrop grayscale properties responsively using breakpoints. This is especially helpful for applying effects only on large screens or under specific resolutions. Use Tailwind’s breakpoint modifiers like- sm, md, etc. to apply the utility only on these breakpoints and above.

This is a live editor. Play around with it!
export default function App() {
  return <h1>Hello world</h1>
}

Custom Backdrop Grayscale

Extending the Theme

While Tailwind CSS provides default grayscale values (0 for none and 100% for fully grayscale), you can extend your theme to add custom levels. Inside your tailwind.config.js, modify the backdropGrayscale property under the theme.extend configuration.

In the below example, you have access to the custom added values of backdrop-grayscale-25 and backdrop-grayscale-75:

This is a live editor. Play around with it!
export default function App() {
  return <h1>Hello world</h1>
}

Using Arbitrary Values

In addition to extending themes, you can also define arbitrary values for backdrop grayscale directly in your utility classes. Just use the square bracket syntax [value] wherever you need it. For example, using backdrop-grayscale-[.5], offers exactly half grayscale intensity.

This is a live editor. Play around with it!
export default function App() {
  return <h1>Hello world</h1>
}

Real World Examples

A product showcase that displays items in grayscale until hovered, creating an engaging shopping experience.

This is a live editor. Play around with it!
export default function App() {
  return <h1>Hello world</h1>
}

Team Member Directory

A professional team directory where member photos appear in grayscale until focused.

This is a live editor. Play around with it!
export default function App() {
  return <h1>Hello world</h1>
}

News Article Grid

A news article grid where unfocused articles appear in grayscale to highlight the current selection.

This is a live editor. Play around with it!
export default function App() {
  return <h1>Hello world</h1>
}

A portfolio showcase where sections transition from grayscale when in view.

This is a live editor. Play around with it!
export default function App() {
  return <h1>Hello world</h1>
}

Travel Destination Cards

A travel destination showcase where cards appear in grayscale during adverse weather conditions.

This is a live editor. Play around with it!
export default function App() {
  return <h1>Hello world</h1>
}

Customization Examples

Product Card

This example demonstrates a product card that applies a custom grayscale backdrop filter when hovering, creating an engaging visual transition.

This is a live editor. Play around with it!
export default function App() {
  return <h1>Hello world</h1>
}

This example shows a gallery with custom grayscale values that progressively reduce as images load, creating a smooth loading experience.

This is a live editor. Play around with it!
export default function App() {
  return <h1>Hello world</h1>
}

Hero Section

This example creates a hero section where the grayscale effect changes based on scroll position.

This is a live editor. Play around with it!
export default function App() {
  return <h1>Hello world</h1>
}

Best Practices

Maintain Design Consistency

When integrating backdrop grayscale into your project, you should prioritize maintaining visual consistency throughout your interface. To achieve this, establish a clear design language by reusing grayscale values and transition effects across similar components. For example, use the same grayscale for overlays across modals, cards, and hero sections.

If needed, consider defining custom grayscale levels inside your tailwind.config.js, so all designs share a unified set of options.

This approach allows you to build polished designs while avoiding random or mismatched effects. Also, ensure your grayscale transitions complement other aesthetics, such as color schemes or typography, for a seamless user experience.

Leverage Utility Combinations

You can create complex and visually striking designs by layering backdrop-grayscale with complementary backdrop utilities such as backdrop-blur, backdrop-opacity, and backdrop-shadow. Pairing backdrop-grayscale with backdrop-blur evokes a subtle glassmorphism effect, enhancing modern aesthetics while maintaining text clarity.

Combining multiple backdrop effects adds depth and dimension to your design, ensuring that important content remains prominent and legible. Always test these utility combinations against different background images and color variations to maintain optimal clarity and visual harmony across diverse layouts.

Accessibility Considerations

Enhance Readability and Navigability

When grayscale is applied to backgrounds behind text or interactive elements, it is essential to maintain clear contrast between foreground content and its backdrop. Increasing text contrast using text-white or backdrop-brightness can enhance legibility, ensuring that content remains accessible. Additionally, pairing grayscale with backdrop-blur can refine the visual hierarchy, making interactive elements stand out.

For scenarios where readability is affected, subtle refinements like backdrop-opacity-50 can soften the intensity of the backdrop while preserving the grayscale effect. When using backdrop-grayscale, always test its impact across different screen sizes and accessibility settings. Ensure that key content remains easily readable under high contrast modes and against varied background conditions.

Ensure Keyboard Accessibility

Keyboard accessibility should always be considered when applying backdrop-grayscale, as users navigating via the Tab key must be able to easily identify focused elements. Since grayscale can mute visual emphasis, elements that require clear focus visibility should be enhanced with backdrop-brightness or strong focus outlines.

Applying focus-visible:ring-2 can create a prominent visual indicator, ensuring that active elements remain easily identifiable even when the background is desaturated. To further reinforce accessibility, consider pairing backdrop-grayscale with subtle contrast enhancements like backdrop-contrast-125 for focusable elements, preventing them from blending into a dimmed background.