时间:2021-07-01 10:21:17 帮助过:2人阅读
本文实例讲述了jQuery定义背景动态切换效果的方法。分享给大家供大家参考。具体如下:
通过下面的jQuery插件,你可以将图片放在一个数组里,然后告诉jQuery图片需要在什么地方背景轮换
(function($){ var defaultSettings; var divfg, divbg; var fadeInterval; var fqTimer; var currImg = 0; var displImg = 0; var running = false; // Setup settings and initialize the plugin $.fn.bgFade = function(settings, callback){ defaultSettings = $.extend({ frequency: 5000, speed: 10, images: [], position: "center center", fgz: 1, bgz: 0 }, settings); var c = 0; $(this).each(function(){ if(c == 0) divfg = $(this); if(c == 1) divbg = $(this); c++; }); setBackgrounds(); if(typeof callback == "function"){ callback(); } return this; }; // Start the fadder $.fn.start = function(){ fqTimer = setTimeout(function(){ nextFade()},defaultSettings.frequency ); running = true; return this; }; // Stop the fadder $.fn.stop = function(){ clearInterval(fadeInterval); clearTimeout(fqTimer); running = false; return this; } // Get the current image info {array id, image url} $.current = function(){ return {pos: displImg, url: defaultSettings.images[displImg]} } // Set the first two backgrounds function setBackgrounds(){ image1 = defaultSettings.images[0]; image2 = defaultSettings.images[1]; divfg.css({ backgroundImage: "url('"+image1+"')", zIndex: defaultSettings.fgz, backgroundPosition: defaultSettings.postion }); divbg.css({ backgroundImage: "url('"+image2+"')", zIndex: defaultSettings.bgz, backgroundPosition: defaultSettings.postion }); currImg = 1; displImg = 0; } // Set the next background after a fade completes function setNextBackground(){ next = arrayNext(); image = defaultSettings.images[next]; divbg.css({ backgroundImage: "url('"+image+"')" }); setTimeout(function(){nextFade()}, defaultSettings.frequency); } // Run a fade function nextFade(){ fadeInterval = setInterval(function(){fadeIt()}, 30); } // Decrement the opacity of the div function fadeIt(){ if(divfg.css("opacity") == ''){ op = 1; }else{ op = divfg.css("opacity"); } op -= ((1000 * defaultSettings.speed) / 30) * 0.0001; divfg.css("opacity", op); if(op <= 0){ bg = divbg; bgimg = divbg.css("background-image"); divfg.css("opacity", "1"); divfg.css("background-image", bgimg); clearInterval(fadeInterval); setNextBackground(); displImg = arrayCurrent(); } } // Get the next item in the array function arrayNext(){ var next = currImg + 1; if(next >= defaultSettings.images.length){ next = 0; } currImg = next; return next; } // Get the current item in the array function arrayCurrent(){ var cur = currImg - 1; if(cur < 0) cur = defaultSettings.images.length - 1; return cur; } })(jQuery);
希望本文所述对大家的jQuery程序设计有所帮助。