拥有博客的第一天,试试水

最近做公司项目,页面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数组,只要传过来图片地址,就可以正常轮播(图片大小要求,与样式一致,根据设计师的规定修改)

posted @ 2017-02-28 17:52  丢了蜡笔の小新  阅读(101)  评论(1)    收藏  举报