Published on

How to Add a Clip Path to an Image in Tailwind CSS

Authors
  • Name
    Ripal & Zalak
    Twitter

How to Add a Clip Path to an Image in Tailwind CSS

If you're working with Tailwind CSS and Next.js, you might wonder how to apply a clip-path to an image or a div for creative design effects. Since Tailwind CSS doesn’t provide built-in utilities for clip-path, you'll need to add custom styles. Let's explore different ways to achieve this.

Solution 1: Using Tailwind's @layer utilities

The best way to add clip-path while using Tailwind CSS is by defining a custom utility class inside your global CSS file (e.g., globals.css or index.css).

Step 1: Define the Utility in CSS

Add the following code inside your global CSS file where your Tailwind directives are present:

@layer utilities {
  .clip-custom-shape {
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 calc(100% - 6vw));
  }
}

Step 2: Use the Custom Class in JSX

Now, you can use this utility class inside your component:

<div className="clip-custom-shape bg-white">
  <img src="/your-image.jpg" alt="Clipped Image" className="h-auto w-full" />
</div>

Solution 2: Using Tailwind's Arbitrary Properties

Another method is to use Tailwind’s arbitrary properties directly inside the JSX file. This method avoids modifying the global CSS.

<div className="bg-white [clip-path:polygon(0_0,100%_0,100%_100%,0_calc(100%-6vw))]">
  <img src="/your-image.jpg" alt="Clipped Image" className="h-auto w-full" />
</div>

✅ This approach is quick and does not require modifying global CSS.

⚠️ However, it can make your JSX harder to read and maintain.


Solution 3: Using Tailwind's @apply for Reusability

If you need to reuse this class multiple times, you can create a reusable class with Tailwind's @apply directive.

Step 1: Define the Class in CSS

@layer components {
  .clip-custom {
    @apply [clip-path:polygon(0_0,100%_0,100%_100%,0_calc(100%-6vw))];
  }
}

Step 2: Use It in Your JSX

<div className="clip-custom bg-gray-200">
  <img src="/your-image.jpg" alt="Clipped Image" className="h-auto w-full" />
</div>

This method keeps your JSX cleaner and improves reusability.


Frequently Asked Questions (FAQs)

1. Can I use clip-path directly in Tailwind?

No, Tailwind does not provide built-in utilities for clip-path, but you can use arbitrary properties or custom utilities to apply clip-path.

2. Will this method work in Next.js?

Yes! These methods work perfectly in Next.js because Tailwind CSS is framework-agnostic.

3. Can I use clip-path for responsive designs?

Yes, you can make clip-path responsive by combining it with Tailwind’s responsive prefixes (e.g., md:[clip-path:polygon(...)]).