jquery – 如何淡化循环背景图像?

前端之家收集整理的这篇文章主要介绍了jquery – 如何淡化循环背景图像?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
新手在这里..我正在努力让我的静态背景变成旋转木马……我现在的html看起来像这样:
  1. <body>
  2. <div class="pageContent">
  3. </div>
  4. </body>

和我的CSS:

  1. body {
  2. background: url('http://placehold.it/1600x1200') no-repeat center center fixed;
  3. -webkit-background-size: cover;
  4. -moz-background-size: cover;
  5. -o-background-size: cover;
  6. background-size: cover;
  7. }

所以我想让背景现在循环图像并保持响应.这可以使用CSS3轻松完成吗?或者我应该将我的html内容包装在带引导程序的旋转木马中?我无法找到如何做到这一点的好例子.提前致谢.

解决方法

jsBin demo

我会使用覆盖身体的绝对定位DIV来做到这一点.
使用新图像淡入DIV,然后将相同的图像设置为正文并隐藏DIV,如:
(灰色是身体,SOrange是DIV)

通过预先递增计数器来实现当前图像阵列的增量.

使用剩余运算符%可以实现循环修复,以防止计数器超出Array中的图像数量.

循环本身是在.fadeTo()回调函数内完成的,只需执行loopBg()函数的新迭代即可.

这是需要的CSS:

  1. *{margin:0;padding:0;} /* Global reset */
  2. html,body{height:100%;width:100%;}
  3. body,#bg{ background: #000 none 50% / cover; }
  4. #bg{
  5. position:absolute;
  6. top:0;
  7. bottom:0;
  8. left:0;
  9. right:0;
  10. width:100%;
  11. height:100%;
  12. }

和jQ:

  1. var images = [
  2. "bg0.jpg","bg1.jpg","bg2.jpg"
  3. ];
  4. var $body = $("body"),$bg = $("#bg"),n = images.length,c = 0; // Loop Counter
  5.  
  6. // Preload Array of images...
  7. for(var i=0; i<n; i++){
  8. var tImg = new Image();
  9. tImg.src = images[i];
  10. }
  11.  
  12. $body.css({backgroundImage : "url("+images[c]+")"});
  13.  
  14. (function loopBg(){
  15. $bg.hide().css({backgroundImage : "url("+images[++c%n]+")"}).delay(2000).fadeTo(1200,1,function(){
  16. $body.css({backgroundImage : "url("+images[c%n]+")"});
  17. loopBg();
  18. });
  19. }());

编辑:如果你想保持背景改变但是可以滚动内容,只需添加overflow:auto;到这个演示中的#page:http://jsbin.com/huzayiruti/1/

猜你在找的jQuery相关文章