How do I create a CSS-only responsive background image slider?

Create a CSS-only Responsive Background Image Slider

A background image slider is a popular feature on modern websites, often used to showcase multiple images in a visually appealing and dynamic way. In this tutorial, we’ll create a CSS-only responsive background image slider, without the need for JavaScript or jQuery. We’ll use CSS keyframes and transitions to achieve the desired effect.

Let’s dive in!

Step 1: Create the HTML Structure

<!-- HTML -->
<!DOCTYPE html>
<html lang="en">
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Responsive Background Image Slider</title>
  <link rel="stylesheet" href="styles.css">
  <div class="slider">
    <div class="slide slide1"></div>
    <div class="slide slide2"></div>
    <div class="slide slide3"></div>

In the HTML structure, we have a “slider” div that contains three “slide” divs. Each “slide” div has a unique class (slide1, slide2, slide3) that we’ll use to set the background images in our CSS.

Step 2: Create the CSS File and Add Base Styles

/* CSS */

box-sizing: border-box;
margin: 0;
padding: 0;
body {
font-family: Arial, sans-serif;

.slider {
width: 100%;
height: 100vh;
overflow: hidden;
position: relative;

.slide {
width: 100%;
height: 100vh;
position: absolute;
opacity: 0;
background-size: cover;
background-position: center;
background-repeat: no-repeat;
animation: slide 12s infinite;

In the CSS file, we start by resetting the default styles using the universal (*) selector. We then set the “slider” div to take up the full width and height of the viewport, and give it a relative position to contain the “slide” divs inside it. The “slide” divs are set to take up the full width and height of the “slider” div, and are positioned absolutely. We also set their opacity to 0, and set the background properties.

Step 3: Add Keyframes and Customize the Slides

/* CSS */
@keyframes slide {
0%, 100% {
opacity: 0;
8% {
opacity: 1;

.slide1 {
background-image: url('image1.jpg');
animation-delay: 0s;

.slide2 {
background-image: url('image2.jpg');
animation-delay: 4s;

.slide3 {
background-image: url('image3.jpg');
animation-delay: 8s;

We define a keyframe animation called “slide” to control the opacity of the “slide” divs. The animation lasts 12 seconds and will loop infinitely. Each slide is set to be fully visible for 8% of the animation time (roughly 1 second), while the rest of the time, the slide is invisible.

Next, we add the background images for each slide and set an animation delay for each. The first slide has no delay, while the second and third slides have delays of 4s and 8s, respectively. This ensures that each slide is displayed sequentially.


You have successfully created a CSS-only responsive background image slider! By using CSS keyframes and animations, you can achieve a smooth and visually appealing slider without the need for JavaScript or jQuery. This technique is lightweight, easy to implement, and works well across a variety of devices and screen sizes. With some simple adjustments, you can customize the number of slides, animation duration, and other properties to fit your design needs. Enjoy your new, stylish, and responsive background image slider!

Got question?

Submit it here

© All rights reserved.