jQuery 制作无缝轮播的焦点图

2016-11-06  本文已影响0人  写代码的八戒

网站上经常见到焦点图动画,焦点图的动画有多种,如:淡入淡出型、上下滑动型、左右滑动型、左右滑动无缝型,对比用户体验的话,无缝轮播方式是最好的,因为在播放多张图片的情况下不会出现间断感。

核心概念

代码

html

<div class="banner">
    <ul class="img">
        <li><a href="#"><img src="images/1.jpg" alt=""></a></li>
        <li><a href="#"><img src="images/2.jpg" alt=""></a></li>
        <li><a href="#"><img src="images/3.jpg" alt=""></a></li>
        <li><a href="#"><img src="images/4.jpg" alt=""></a></li>
    </ul>
    <ul class="num"></ul>
    <div class="btn btn_l"><</div>
    <div class="btn btn_r">></div>
</div>

js

$(function () {
    var i = 0;
    var clone = $(".banner .img li").first().clone();
    $(".banner .img").append(clone);
    var size = $(".banner .img li").size();
    for (var j = 0; j < size - 1; j++) {
        $(".banner .num").append("<li></li>");
    }
    $(".banner .num li").first().addClass("on");
    /*  鼠标划入圆点 */
    $(".banner .num li").hover(function () {
        var index = $(this).index();
        i = index;
        $(".banner .img").stop().animate({left: -index * 550}, 500)
        $(this).addClass('on').siblings().removeClass('on');
    })
    /* 自动轮播 */
    var t = setInterval(function () {
        i++;
        move()
    }, 2000);
    /* 对banner定时器的操作 */
    $(".banner").hover(function () {
        clearInterval(t);
    }, function () {
        t = setInterval(function () {
            i++;
            move();
        }, 2000);
    })
    /* 向左的按钮 */
    $(".banner .btn_l").click(function () {
        i++;
        move();
    })
    /* 向右的按钮 */
    $(".banner .btn_r").click(function () {
        i--;
        move();
    })
    function move() {
        if (i == size) {
            $(".banner .img").css({left: 0});
            i = 1;
        }
        if (i == -1) {
            $(".banner .img").css({left: -(size - 1) * 550});
            i = size - 2;   // size - 1 易错
        }
        $(".banner .img").stop().animate({left: -550 * i}, 500);
        if (i == size - 1) {
            $(".banner .num li").eq(0).addClass('on').siblings().removeClass('on');
        } else {
            $(".banner .num li").eq(i).addClass('on').siblings().removeClass('on');
        }
    }
})

css

* {
    padding: 0;
    margin: 0;
    list-style-type: none;
}
.banner {
    margin: 100px auto;
    border: 5px solid #000;
    width: 550px;
    height: 300px;
    overflow: hidden;
    position: relative;
}
.banner .img {
    width: 5000px;
    position: absolute;
    top: 0;
    left: 0;
}
.banner .img li {
    float: left;
}
.banner .num {
    position: absolute;
    width: 100%;
    bottom: 10px;
    left: 0;
    text-align: center;
    font-size: 0;
}
.banner .num li {
    width: 10px;
    height: 10px;
    background: #888;
    -webkit-border-radius: 50%;
    -moz-border-radius: 50%;
    border-radius: 50%;
    display: inline-block;
    margin: 0 3px;
    cursor: pointer;
}
.banner .num li.on {
    background: #F60;
}
.banner .btn {
    width: 30px;
    height: 50px;
    background: rgba(0, 0, 0, 0.5);
    position: absolute;
    top: 50%;
    margin-top: -25px;
    cursor: pointer;
    text-align: center;
    line-height: 50px;
    color: #fff;
    font-size: 40px;
    font-family:"宋体";   /* 设置箭头样式: FireFox默认黑体;Chrome默认宋体;*/
    display: none;
}
.banner:hover .btn {
    display: block;
}
.banner .btn_l {
    left: 0;
}
.banner .btn_r {
    right: 0;
}
上一篇 下一篇

猜你喜欢

热点阅读