jQuery实现经典的网页3D轮播图封装功能【附源码下

网页伪3D轮播图,其实就是轮播图旋转木马效果。其实在jquery插件库也有很多旋转木马的插件,但是博主封装的这个新的插件比起以上的都适应性更好。其适应性好表现在:调用灵活性高用法更简单,css样式都封装好了基本不用写,在body里面写ul>li>img标签即可,可设置参数多,甚至不同图片的大小都可以自适应轮播,各个浏览器兼容性好(包括IE,虽然我没测过IE8以下浏览器,不过IE8以上都没问题),好了,以下看代码和用法。

head引入两个文件,第一个是jquery的插件(这是1.11.0版本,当然其他版本也可以哦,不过低版本的相对IE兼容性更好),第二个是我封装好的javascript脚本

<script src="https://www.jb51.net/js/jquery-1.11.0.js" type="text/javascript" charset="utf-8"></script> <script src="https://www.jb51.net/js/Figure_3D.js" type="text/javascript" charset="utf-8"></script>

body里面插入轮播图,ul的id要为pic_play,当然我这里是7张图,你也可以增加减少图片,但是这里有一个重要问题是,图片数量要为单数,不能为偶数,否则会出问题,这是一个小小的bug。当然你也可以在li里面写<a><img src/></a>也是可以的。

<ul> <li><img src="https://www.jb51.net/img/dc1.jpg"/></li> <li><img src="https://www.jb51.net/img/dc2.jpg"/></li> <li><img src="https://www.jb51.net/img/dc3.jpg"/></li> <li><img src="https://www.jb51.net/img/dc4.jpg"/></li> <li><img src="https://www.jb51.net/img/dc5.jpg"/></li> <li><img src="https://www.jb51.net/img/dc6.jpg"/></li> <li><img src="https://www.jb51.net/img/dc7.jpg"/></li> </ul>

css基本不用写,不过要习惯性给padding和margin归0

*{ margin: 0; padding: 0; list-style: none; }

重要封装脚本Figure_3D.js

// ulwidth:父节点ul总宽度(number), // height:ul和图片的初始化最大高度(中间)(number), // liwidth:图片的初始化最大宽度(中间)(number), // minopacity:图片最小透明度(0~1), // minscale:图片最小缩放系数(0~1), // direction:默认轮播方向("left","right"), // speed:动画速度(number), // delayed:每张图片延时停留时间(number)(注:delayed>=speed), // mousestop:鼠标经过是否停止(false,true), function init(ulwidth,height,liwidth,minopacity,minscale,direction,speed,delayed,mousestop){ $("#pic_play").css({"position":"relative","width":ulwidth,"height":height}); $("#pic_play>li").css({"position":"absolute","width":liwidth,"height":height}); if($("#pic_play>li>a").size()>0){ $("#pic_play>li>a").css("display","block"); } if($("#pic_play>li>a>img").size()>0){ $("#pic_play>li>a>img").css({"display":"block","width":"100%","height":"100%"}); }else if($("#pic_play>li>img").size()>0){ $("#pic_play>li>img").css({"display":"block","width":"100%","height":"100%"}); }else return; var len=$("#pic_play>li").size(); jsonstyle=[]; var display=-1; var minopacity=minopacity; var opacitystep=(1-minopacity)/(Math.floor(len/2)-1); var minscale=minscale; var scalestep=(1-minscale)/(Math.floor(len/2)); var Dvalue=Math.round((($("#pic_play").innerWidth()-$("#pic_play>li").eq(0).outerWidth())/2)/Math.floor(len/2)); $("#pic_play>li").each(function(i){ if(i<Math.floor(len/2)){ var realoff=i*Dvalue; display++; var realwidth=Math.round(minscale*$("#pic_play>li").eq(i).outerWidth()); var realheight=Math.round(minscale*$("#pic_play>li").eq(i).outerHeight()); var realtop=Math.round(($("#pic_play>li").eq(Math.floor(len/2)).outerHeight()-realheight)/2); jsonstyle[i]={"realOff":realoff,"realIndex":display,"realOpacity":minopacity,"realWidth":realwidth,"realHeight":realheight,"realTop":realtop}; $("#pic_play>li").eq(i).css({"left":realoff,"z-index":display,"opacity":minopacity,"width":realwidth,"height":realheight,"top":realtop}); minopacity+=opacitystep; if(minopacity>=1){ minopacity=1.0; } minscale+=scalestep; }else if(i==Math.floor(len/2)){ display++ var realwidth=Math.round(minscale*$("#pic_play>li").eq(i).outerWidth()); var realheight=Math.round(minscale*$("#pic_play>li").eq(i).outerHeight()); var realoff=Math.round(($("#pic_play").innerWidth()-$("#pic_play>li").eq(i).outerWidth())/2); jsonstyle[i]={"realOff":realoff,"realIndex":display,"realOpacity":1,"realWidth":realwidth,"realHeight":realheight,"realTop":0}; $("#pic_play>li").eq(i).css({"left":realoff,"z-index":display,"opacity":1,"width":realwidth,"height":realheight,"top":0}); }else{ display--; minscale-=scalestep; var realwidth=Math.round(minscale*$("#pic_play>li").eq(i).outerWidth()); var realheight=Math.round(minscale*$("#pic_play>li").eq(i).outerHeight()); var realoff=Math.round($("#pic_play").innerWidth()-(realwidth+(len-1-i)*Dvalue)); var realtop=Math.round(($("#pic_play>li").eq(Math.floor(len/2)).outerHeight()-realheight)/2); jsonstyle[i]={"realOff":realoff,"realIndex":display,"realOpacity":minopacity,"realWidth":realwidth,"realHeight":realheight,"realTop":realtop}; $("#pic_play>li").eq(i).css({"left":realoff,"z-index":display,"opacity":minopacity,"width":realwidth,"height":realheight,"top":realtop}); minopacity-=opacitystep; } }); animationPlay(direction,speed,delayed); if(mousestop==true){ animationStop(direction,speed,delayed); } } //offset:左右按钮分别距离ul左右边距(number), //top:左右按钮距离ul上边距(number), //direction:默认轮播方向("left","right"),一般和init里的一样,如果你不想点击后改变运动方向, //speed:动画速度(number),一般和init里的一样,如果你不想点击后改变动画速度, //delayed:每张图片延时停留时间(number)(注:delayed>=speed),一般和init里的一样,如果你不想点击后改变延时停留时间, function btn(offset,top,direction,speed,deleyed){ var leftbtn=$("<span></span>"); leftbtn.css({"width":32,"height":32,"display":"inline-block","position":"absolute","left":offset,"top":top,"background":"url(img/slider-arrow.png) no-repeat -100px 0","cursor":"pointer","z-index":100}); var rightbtn=$("<span></span>"); rightbtn.css({"width":32,"height":32,"display":"inline-block","position":"absolute","right":offset,"top":top,"background":"url(img/slider-arrow.png) no-repeat 0 0","cursor":"pointer","z-index":100}); $("#pic_play").append(leftbtn); $("#pic_play").append(rightbtn); leftbtn.hover(function(){ $(this).css("background-position","-160px 0"); },function(){ $(this).css("background-position","-100px 0"); }); rightbtn.hover(function(){ $(this).css("background-position","-60px 0"); },function(){ $(this).css("background-position","0 0"); }); leftbtn.click(function(){ clearInterval(timeplay); $("#pic_play>li").stop(true); var li=$("#pic_play>li").first(); $("#pic_play").append(li); $("#pic_play>li").each(function(list){ $("#pic_play>li").eq(list).css("z-index",jsonstyle[list]["realIndex"]).animate({"left":jsonstyle[list]["realOff"],"opacity":jsonstyle[list]["realOpacity"],"width":jsonstyle[list]["realWidth"],"height":jsonstyle[list]["realHeight"],"top":jsonstyle[list]["realTop"]},speed); }); animationPlay(direction,speed,deleyed); }); rightbtn.click(function(){ clearInterval(timeplay); $("#pic_play>li").stop(true); var li=$("#pic_play>li").last(); $("#pic_play").prepend(li); $("#pic_play>li").each(function(list){ $("#pic_play>li").eq(list).css("z-index",jsonstyle[list]["realIndex"]).animate({"left":jsonstyle[list]["realOff"],"opacity":jsonstyle[list]["realOpacity"],"width":jsonstyle[list]["realWidth"],"height":jsonstyle[list]["realHeight"],"top":jsonstyle[list]["realTop"]},speed); }); animationPlay(direction,speed,deleyed); }); } //JSON动画 function animationPlay(direction,speed,deleyed){ timeplay=setInterval(function(){ if(direction.toLowerCase()=="left"){ var li=$("#pic_play>li").first(); $("#pic_play").append(li); }else if(direction.toLowerCase()=="right"){ var li=$("#pic_play>li").last(); $("#pic_play").prepend(li); }else return; $("#pic_play>li").each(function(list){ $("#pic_play>li").eq(list).css("z-index",jsonstyle[list]["realIndex"]).animate({"left":jsonstyle[list]["realOff"],"opacity":jsonstyle[list]["realOpacity"],"width":jsonstyle[list]["realWidth"],"height":jsonstyle[list]["realHeight"],"top":jsonstyle[list]["realTop"]},speed); }); },deleyed); } function animationStop(direction,speed,delayed){ $("#pic_play").mouseenter(function(){ clearInterval(timeplay); }); $("#pic_play").mouseleave(function(){ animationPlay(direction,speed,delayed) }); }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/2464c7833a1a9b4dbfef9971ea026b26.html