DEV Community

Cover image for 3D Parallax Hover Effect Using TailwindCSS
Anower Jahan Shofol
Anower Jahan Shofol

Posted on

3D Parallax Hover Effect Using TailwindCSS

Have you ever been mesmerized by those stunning 3D parallax hover effects on cards? They look complex, right? Well, I thought so too, until I came across a simple CodePen demo that showed how easy it is to create one. Do you want to learn it too? Let’s dive in-

Some basics

To achieve the 3D effect, we need to know couple of things first. Those are-

  • Perspective: The perspective property controls how far the object appears from the viewer. A lower value creates a stronger, more dramatic 3D effect, while a higher value makes the effect more subtle.
  • Transform: The transform property lets you apply 2D or 3D changes to an element. You can use it to rotate, scale, move, skew, and more!

Let’s jump to code

Check the final result first, so you will understand what we are trying to build. Hover over the card and see how it looks?

Now, let’s see how it works. I won’t explain every TailwindCSS class here. We will just discuss about the main classes which are doing the effect. First, let’s see the main card’s div’s classes-

<div class="cursor-pointer [transform:perspective(800px)_rotateY(10deg)] hover:[transform:perspective(800px)_rotateY(-10deg)] w-96 sm:w-84 p-5 bg-violet-300 rounded-lg shadow-lg group duration-300">
Enter fullscreen mode Exit fullscreen mode

Look at this part here-

[transform:perspective(800px)_rotateY(10deg)] hover:[transform:perspective(800px)_rotateY(-10deg)]
Enter fullscreen mode Exit fullscreen mode

We are doing two things here. At first, we are rotating the card by its Y axis by 10 degrees. And, also setting the perspective to 800px. As a result, the normal state of the card looks like the image below. It is slightly rotated to the right. And, as we have applied some perspective, you can see that the right side of the card is bit skewed. That’s how real 3D world works!

Normal state of the card

We can tweak the perspective to see the changes in the card. And, you will also get an idea how the perspective works-

This is how it looks if we change the perspective to 100px. The more we lower the perspective value, the more closer the content is - remember?

Card state on 100px perspective

And, this is what we get if we set the perspective to 10000px. It is so far that it seems like there’s no rotation at all!

Card state on 10000px perspective

Now, we will see how it is having a 3D illusion when we hover it. And, you will be surprised to see that it’s so easy to fool our eye!

See this part of the code of the img-

<img class="duration-300 group-hover:-translate-x-8" .../>
Enter fullscreen mode Exit fullscreen mode

When hovering over the card, the image slides 2.5rem to the left, creating a dynamic effect. For this, we are using Group modifer of TailwindCSS. And, that’s it! We will have a 3D image rotating card.

Now it’s your turn! Experiment with these classes, tweak the perspective, or combine this effect with other TailwindCSS utilities to create something unique. Don’t forget to share your creations in the comments or on social media!

You can also find me here-

Top comments (0)