Slawomir Wozniak
Slawomir Wozniak

Reputation: 518

JQuery how to properly set slider effect

I want to create simple background image slider in jQuery. Everything works, except for animation. I think it should act like that:

  1. Fade image out
  2. Change the image when user doesn't see
  3. Fade new image in

But I get something different, I feel like first photo changes, and then image fades out.

I tried to delay(), but didn't work, and hide(), but it made animation too unnatural.

Here I created example in jsfiddle, please take a look: https://jsfiddle.net/xpvt214o/375627/

$('.background').fadeOut(1000).css('background-image', 
'url('+images[whichone++]+')')
.fadeIn(1000);

How can I change this?

$(document).ready(function(){
var images= ['https://images.pexels.com/photos/46710/pexels-photo-46710.jpeg?cs=srgb&dl=beach-sand-summer-46710.jpg&fm=jpg','https://images.pexels.com/photos/219998/pexels-photo-219998.jpeg?cs=srgb&dl=beach-birds-calm-219998.jpg&fm=jpg','https://images.pexels.com/photos/207962/pexels-photo-207962.jpeg?cs=srgb&dl=artistic-blossom-bright-207962.jpg&fm=jpg'];

var howmany = images.length;
var whichone = 0;

function slideSwitch(){
if(whichone >= howmany-1 ) { whichone = 0}
$('.background').fadeOut(1000).css('background-image', 'url('+images[whichone++]+')')
.fadeIn(1000);
}
	setInterval(slideSwitch, 5000);


});
.background{
   background: cover;
    position:fixed;
    width: 100%;
    height: 100%;
    left:0;
    top:0;
    background-image: url("https://images.pexels.com/photos/207962/pexels-photo-207962.jpeg?cs=srgb&dl=artistic-blossom-bright-207962.jpg&fm=jpg") ;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="background"></div>

<div class="content">

Upvotes: 1

Views: 33

Answers (1)

Nandita Sharma
Nandita Sharma

Reputation: 13417

Try like shown below

Added transition: background-image 2s; and changed your js a bit. Also your background:cover style was wrong. It should have been background-size: cover;

$(document).ready(function() {
  var images = ['https://images.pexels.com/photos/46710/pexels-photo-46710.jpeg?cs=srgb&dl=beach-sand-summer-46710.jpg&fm=jpg', 'https://images.pexels.com/photos/219998/pexels-photo-219998.jpeg?cs=srgb&dl=beach-birds-calm-219998.jpg&fm=jpg', 'https://images.pexels.com/photos/207962/pexels-photo-207962.jpeg?cs=srgb&dl=artistic-blossom-bright-207962.jpg&fm=jpg'];

  var howmany = images.length;
  var whichone = 0;

  function slideSwitch() {
    if (whichone >= howmany - 1) {
      whichone = 0
    }
    $('.background').css('background-image', 'url(' + images[whichone++] + ')');
  }
  setInterval(slideSwitch, 5000);


});
.background {
  background-size: cover;
  position: fixed;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
  transition: background-image 2s;
  background-image: url("https://images.pexels.com/photos/207962/pexels-photo-207962.jpeg?cs=srgb&dl=artistic-blossom-bright-207962.jpg&fm=jpg");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="background"></div>

<div class="content">

Upvotes: 1

Related Questions