美文网首页
jQuery 制作无缝轮播的焦点图

jQuery 制作无缝轮播的焦点图

作者: 写代码的八戒 | 来源:发表于2016-11-06 11:49 被阅读0次

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

    核心概念

    • JavaScript 函数
    • setInterval 定时器
    • jQuery 的 animate 动画
    • jQuery 的 mouseover 及 click 事件
    • 无缝概念的理解

    代码

    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;
    }
    

    相关文章

      网友评论

          本文标题:jQuery 制作无缝轮播的焦点图

          本文链接:https://www.haomeiwen.com/subject/poaguttx.html