用JQuery改变背景

时间:2014-08-19 15:29:06

标签: javascript jquery settimeout

我使用这个JQuery代码在五秒后改变背景,我怎样才能使背景淡化/动画而不是瞬间改变?

    <script>
    $(function () {
    var body = $('header');
    var backgrounds = [
      'url(<?php bloginfo('template_url') ?>/img/header-boy.jpg)',
      'url(<?php bloginfo('template_url') ?>/img/header-boy-hover.jpg)'];
    var current = 0;

    function nextBackground() {
        body.css(
            'background',
        backgrounds[current = ++current % backgrounds.length]);

        setTimeout(nextBackground, 5000);
    }
    setTimeout(nextBackground, 5000);
    body.css('background', backgrounds[0]);
});
    </script>

2 个答案:

答案 0 :(得分:0)

您还可以使用非常简单易用的CSS过渡:

body {
   background-color: white;
   transition: background-color 1s 5s ease;
}

body.new-background-color {
   background-color: black;
}

现在在JavaScript中,只需在body元素上使用Add class来添加类:

jQuery('body').addClass('new-background-color');

我没有对此进行过测试,但只要您不需要使用旧的恶魔浏览器(IE8或更低版本),它就可以正常工作。

答案 1 :(得分:0)

这一点,这可能会有所帮助 codepen link is here

var interval = setInterval(changePic,10);
var currentColor = [0,0,0];
function changePic(){
  $('#head').css({background: 'rgb(' + currentColor[0] + ',' + currentColor[1] + ',' + currentColor[2] + ')'});
  currentColor[0] = increaseColor(currentColor[0]);
  //currentColor[1] = increaseColor(currentColor[1]);
  currentColor[2] = increaseColor(currentColor[2]);

}
function increaseColor(colValue){
  colValue = (colValue > 255)? 0 : (colValue + 1);
  return colValue;
}