CSS Only Crossfading Background Slideshow

Category: CSS & CSS3 , Slideshow | February 5, 2016
Author: craigraphics
Views Total: 12,386
Official Page: Go to website
Last Update: February 5, 2016
License: MIT

Preview:

CSS Only Crossfading Background Slideshow

Description:

A fullscreen background slideshow with a crossfade transition effect built only with HTML and CSS/CSS3.

How to use it:

Build  the html structure for the background slideshow.

<div class="crossfade">
  <figure></figure>
  <figure></figure>
  <figure></figure>
  <figure></figure>
  <figure></figure>
</div>

The core CSS styles.

.crossfade > figure {
  animation: imageAnimation 30s linear infinite 0s;
  backface-visibility: hidden;
  background-size: cover;
  background-position: center center;
  color: transparent;
  height: 100%;
  left: 0px;
  opacity: 0;
  position: absolute;
  top: 0px;
  width: 100%;
  z-index: 0;
}

Add background images to the slideshow.

.crossfade > figure:nth-child(1) { background-image: url('1.jpg'); }

.crossfade > figure:nth-child(2) {
  animation-delay: 6s;
  background-image: url('2.jpg');
}

.crossfade > figure:nth-child(3) {
  animation-delay: 12s;
  background-image: url('3.jpg');
}

.crossfade > figure:nth-child(4) {
  animation-delay: 18s;
  background-image: url('4.jpg');
}

.crossfade > figure:nth-child(5) {
  animation-delay: 24s;
  background-image: url('5.jpg');
}

Create the crossfade effect using CSS3 animations.

@keyframes 
imageAnimation {  0% {
 animation-timing-function: ease-in;
 opacity: 0;
}
 8% {
 animation-timing-function: ease-out;
 opacity: 1;
}
 17% {
 opacity: 1
}
 25% {
 opacity: 0
}
 100% {
 opacity: 0
}
}

 

You Might Be Interested In:


5 thoughts on “CSS Only Crossfading Background Slideshow

  1. Filip

    Hi, how can i put a menu on the slideshow? When i do it my menu just fades away with the picture.

    Reply
  2. chetski

    This works well but I’ve tried to reduce to 3 images by removing the 2 elements and the corresponding css. I also reduced the animation time from 30s to 18s. However, there is a delay between the images so I suspect the @keyframes need adjusting? Any ideas what these values should be? Can you explain what the @keyframes is doing? Thanks, Chet

    Reply
  3. Roosterbrood

    Great Tutorial, thanks. Is there a way to add text to each image?

    Reply

Leave a Reply