jQuery插件animateSlide制作多点滑动幻灯片
首页banner的酷炫效果多来自全屏大图的幻灯片动画,下面提供一种完美兼容的jquery动画特效:全新jquery多点滑动幻灯片——全屏动画animateSlide(代码完全原创)。
直接上代码,把html、css和jquery代码copy到页面上即可呈现完美画面。
html代码如下:
<divclass="animateSlide"> <divclass="animateSlideImgWrap"> <divclass="animateSlideImgBoxpresent"> <pclass="text1">亲,这是第一行标题</p> <pclass="text2">AAAAAAAAAAAAAAAAAAAAA</p> <!--<imgclass="img"alt=""src="img/1.png"/>--> <divclass="img"style="width:500px;height:390px;background:#ffaeae;opacity:0.6;"></div><!--实际项目中用上面注释的半透明png图片,目前临时用div代替图片--> </div> <divclass="animateSlideImgBox"> <pclass="text1">亲,这是一行宣传语</p> <pclass="text2">BBBBBBBBBBBBBBBBBBBBB</p> <!--<imgclass="img"alt=""src="img/2.png"/>--> <divclass="img"style="width:500px;height:390px;background:#aeffb2;opacity:0.6;"></div><!--实际项目中用上面注释的半透明png图片,目前临时用div代替图片--> </div> <divclass="animateSlideImgBox"> <pclass="text1">亲,这是一个奇迹啊</p> <pclass="text2">CCCCCCCCCCCCCCCCCCCCC</p> <!--<imgclass="img"alt=""src="img/3.png"/>--> <divclass="img"style="width:500px;height:390px;background:#aebdff;opacity:0.6;"></div><!--实际项目中用上面注释的半透明png图片,目前临时用div代替图片--> </div> </div> <divclass="animateSlideBtnL"><</div> <divclass="animateSlideBtnR"><</div> </div>
css代码如下:
.animateSlide{width:100%;height:390px;position:relative;background:#f5f5f5;} .animateSlideImgWrap{width:100%;height:390px;position:absolute;z-index:1;overflow:hidden;} .animateSlideImgWrap.present{display:block;} .animateSlideImgBox{width:100%;height:390px;position:absolute;z-index:1;display:none;} .animateSlideImgBox.text1{font-family:MicrosoftYaHei;font-size:36px;line-height:1.2em;color:#384cd0;position:absolute;top:120px;z-index:3;white-space:nowrap;} .animateSlideImgBox.text2{font-family:MicrosoftYaHei;font-size:26px;line-height:1.2em;color:orange;position:absolute;top:200px;z-index:3;white-space:nowrap;} .animateSlideImgBox.img{position:absolute;left:470px;top:0;z-index:2;} .animateSlideBtnL, .animateSlideBtnR{ width:30px;height:60px;line-height:60px;font-size:20px;font-weight:700;text-align:center;background:#ddd; position:absolute;left:30px;top:150px;z-index:6;cursor:pointer;display:none; } .animateSlideBtnR{left:auto;right:20px;}
jquery代码如下:
(function($){ $.fn.animateSlide=function(options){ vardefaults={ btnL:".animateSlideBtnL", btnR:".animateSlideBtnR", imgBox:".animateSlideImgBox", animateTime:500, delayTime:5000, density:1 }; varopts=$.extend(defaults,options); varwidthWin=$(window).width(); $(window).resize(function(){ widthWin=$(window).width(); }); // this.on("mouseenter",function(){ $(this).find(".animateSlideBtnL,.animateSlideBtnR").stop().fadeIn(400); }).on("mouseleave",function(){ $(this).find(".animateSlideBtnL,.animateSlideBtnR").stop().fadeOut(400); }); returnthis.each(function(){ var_this=$(this); var_btnL=_this.find(opts.btnL); var_btnR=_this.find(opts.btnR); var_imgBox=_this.find(opts.imgBox); var_imgBoxCur=_imgBox.filter(".present"); var_curText1=_imgBoxCur.find(".text1"),_curText2=_imgBoxCur.find(".text2"),_curImg=_imgBoxCur.find(".img"); var_imgBoxNext=null,_nextText1=null,_nextText2=null,_nextImg=null; varindex=_imgBox.index(_imgBoxCur)||0; varsize=_imgBox.size(); varstart=null; index++; if(index>=size){ index=0; } _imgBoxNext=_imgBox.eq(index); _nextText1=_imgBoxNext.find(".text1"); _nextText2=_imgBoxNext.find(".text2"); _nextImg=_imgBoxNext.find(".img"); _imgBox.find(".text1,.text2,.img").css("left",widthWin); _imgBoxCur.find(".text1,.text2").css("left",(widthWin-980)/2+"px"); _imgBoxCur.find(".img").css("left",(widthWin-980)/2+470+"px"); _btnR.on("click",function(){ animateSlideFn(); }); _btnL.on("click",function(){ animateSlideFn(); }); start=setTimeout(function(){ animateSlideFn(); start=setTimeout(arguments.callee,opts.delayTime); },opts.delayTime); functionanimateSlideFn(){ if(!(_imgBoxCur.find(".text1,.text2,.img").is(":animated")||_imgBoxNext.find(".text1,.text2,.img").is(":animated"))){ //当前帧动画 _curText1.animate({ left:parseInt(_curText1.css("left"))+100 },opts.animateTime*0.6,function(){ _curText1.animate({ left:"-510px" },opts.animateTime); }); setTimeout(function(){ _curText2.animate({ left:parseInt(_curText2.css("left"))+100 },opts.animateTime*0.6,function(){ _curText2.animate({ left:"-510px" },opts.animateTime); }); },200); setTimeout(function(){ _curImg.animate({ left:parseInt(_curImg.css("left"))+200 },opts.animateTime*0.6,function(){ _curImg.animate({ left:"-510px" },opts.animateTime,function(){ _imgBox.find(".text1,.text2,.img").css("left",widthWin); _imgBoxCur.removeClass("present"); }); }); },400); //下一帧动画 setTimeout(function(){ _imgBoxNext.addClass("present"); _nextText1.animate({ left:(widthWin-980)/2-100 },opts.animateTime,function(){ _nextText1.animate({ left:(widthWin-980)/2 },opts.animateTime*0.6); }); setTimeout(function(){ _nextText2.animate({ left:(widthWin-980)/2-100 },opts.animateTime,function(){ _nextText2.animate({ left:(widthWin-980)/2 },opts.animateTime*0.6); }); },200); setTimeout(function(){ _nextImg.animate({ left:(widthWin-980)/2+370 },opts.animateTime,function(){ _nextImg.animate({ left:(widthWin-980)/2+470 },opts.animateTime*0.6,function(){ index++; if(index>=size){ index=0; } _imgBoxCur=_imgBox.filter(".present"); _imgBoxNext=_imgBox.eq(index); _curText1=_imgBoxCur.find(".text1"); _curText2=_imgBoxCur.find(".text2"); _curImg=_imgBoxCur.find(".img"); _nextText1=_imgBoxNext.find(".text1"); _nextText2=_imgBoxNext.find(".text2"); _nextImg=_imgBoxNext.find(".img"); }); }); },400); },opts.density*1200); } } }); }; })(jQuery); $(function(){ $(".animateSlide").animateSlide({ btnL:".animateSlideBtnL", btnR:".animateSlideBtnR", imgBox:".animateSlideImgBox", animateTime:500, delayTime:6000, density:0.9 }); });