拥有博客的第一天,试试水
最近做公司项目,页面banner图要用轮播展示,而且图片是从后台取的,设计告诉我,图片轮播之前其他网页有用过有现成的,然而我不喜欢那样的轮播,于是就自己写了一个:
首先,图片大小是设计定好的,所以简单的布局
1 .banner{ 2 width: 100%; 3 height: 380px; 4 margin: auto; 5 background-repeat: no-repeat; 6 background-position: center; 7 transition: all 2s; 8 } 9 .bannerContainer{ 10 width: 1190px; 11 height: 100%; 12 margin: auto; 13 padding-top: 242px; 14 box-sizing: border-box; 15 position: relative; 16 } 17 .spanBox{ 18 position: relative; 19 height: 30px; 20 width: 50%; 21 margin: auto; 22 top:80px; 23 text-align: center; 24 } 25 .spanBox span{ 26 width: 10px; 27 height: 10px; 28 border-radius: 5px; 29 background-color: #000; 30 display: inline-block; 31 vertical-align: bottom; 32 margin-right: 20px; 33 opacity: 0.5; 34 } 35 .spanBox .currentOne{ 36 background-color: #7953d5; 37 width: 37px; 38 opacity: 1; 39 }
<div class="banner"> <div class="bannerContainer"> <div class="spanBox"> <span class="currentOne"></span> </div> </div> </div>
然后就是从后台接收banner图的数据,利用jq来做定时器进行轮播,当然也包含鼠标悬停静止,移开启动;点击小圆点切换图片
1 $(function () { 2 //这个img数组应从后台取出,图片地址最好为绝对地址,这样便于维护 3 var imgs=["url('together/images/banner.jpg')","url('together/images/banner1.jpg')","url('together/images/banner2.jpg')","url('together/images/banner1.jpg')"]; 4 // 下边这个是动态为轮播图添加点击圆点 5 for(var j=1;j<imgs.length;j++){ 6 $('.spanBox').append('<span></span>') 7 } 8 9 //启动图片轮播 10 ImgTurn(0,imgs); 11 //设置一个鼠标悬停在小圆点上是否有点击的状态,false为没点 12 var isClick=false; 13 //轮播图hover暂停与重启 14 $('.banner').hover(function () { 15 clearInterval(myInterval); 16 },function () { 17 if(isClick===true){ 18 isClick=false; 19 }else { //获取悬停是展示的图片的索引 20 $('.spanBox span').each(function (index) { 21 if($('.spanBox span').eq(index).hasClass('currentOne')){ 22 ImgTurn(index,imgs); 23 } 24 }); 25 } 26 }); 27 28 //小圆点的点击事件 29 $('.spanBox span').each(function (index) { 30 $(this).click(function (e) { 31 e.stopPropagation();//阻止事件冒泡 32 isClick=true; 33 clearInterval(myInterval); 34 ImgTurn(index,imgs); 35 }); 36 }); 37 }); 38 //图片轮播 39 function ImgTurn(i,imgs) { 40 $('.banner').css({'background-image':imgs[i]}); 41 $('.spanBox span').eq(i).addClass('currentOne').siblings().removeClass('currentOne'); 42 myInterval=setInterval(function () { 43 if(i===imgs.length-1) i=-1; 44 $('.banner').css({'background-image':imgs[i+1]}); 45 $('.spanBox span').eq(i+1).addClass('currentOne').siblings().removeClass('currentOne'); 46 i++; 47 },5000); 48 }
整个js 代码,可以封装成一个方法,需要一个参数,就是Imgs数组,只要传过来图片地址,就可以正常轮播(图片大小要求,与样式一致,根据设计师的规定修改)
简简单单,不喜不悲,发现自从当上程序员,女朋友这个东西离我越来越远...
浙公网安备 33010602011771号