How do I create a CSS-only image hover effect with a color overlay?

CSS-Only Image Hover Effect with Color Overlay

Creating a CSS-only image hover effect with a color overlay can be a great way to enhance the visual appeal of your website. This effect can be achieved by using the :hover pseudo-class and CSS transitions. In this blog post, we will walk through the process step by step and provide code samples to make it easy for you to implement this effect on your own site.

Step 1: Set up the HTML structure

First, let’s create a basic HTML structure for our image container. We will use a div element with a class called “image-container” and place an img element inside it.

<!-- html -->
<!DOCTYPE html>
  <link rel="stylesheet" href="styles.css">
  <div class="image-container">
    <img src="your-image-source.jpg" alt="Your Image Description">

Step 2: Create the basic CSS for the image container

Next, let’s create a new CSS file called “styles.css” and apply some basic styles to the image container. This will include setting the position property to “relative” and specifying the dimensions of the container.

/* CSS */
.image-container {
position: relative;
width: 300px;
height: 200px;
overflow: hidden;

Step 3: Style the image

Now, we will apply some additional styles to the img element inside the container. We will make the image fit the container and add a smooth transition for the hover effect.

/* CSS */
.image-container img {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.3s ease;

Step 4: Create the color overlay

To create the color overlay, we will add a new div element with a class called “overlay” inside the image container. Then, we will style this element by setting its position, dimensions, background color, and initial opacity.

<!-- html -->
<div class="image-container">
  <img src="your-image-source.jpg" alt="Your Image Description">
  <div class="overlay"></div>
/* CSS /
.overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(255, 0, 0, 0.5); / Red overlay with 50% opacity */
opacity: 0;
transition: opacity 0.3s ease;

Step 5: Implement the hover effect

Finally, we will use the :hover pseudo-class to apply the hover effect. When the user hovers over the image container, the image will scale up, and the color overlay will become fully visible.

/* CSS */
.image-container:hover img {
transform: scale(1.1);

.image-container:hover .overlay {
opacity: 1;


Now you have successfully created a CSS-only image hover effect with a color overlay. This effect can add an extra layer of interactivity and visual appeal to your website. Feel free to customize the color, opacity, and transition properties to fit your design needs.

Got question?

Submit it here

© All rights reserved.