jquery实现轮播图的无缝轮播

今天学习了一个jquery实现无缝轮播的方法与思路,相信好多初学者都对轮播不陌生,不多说,直接开始:

1.代码——html部分

<div class="banner">
    <ul class="img">
        <li><img src="../img/1.jpg" alt=""/></li>
        <li><img src="../img/2.jpg" alt="" /></li>
        <li><img src="../img/3.jpg" alt="" /></li>
        <li><img src="../img/4.jpg" alt="" /></li>
    </ul>
    <ul class="num">

    </ul>
    <div class="btn btn_l">&lt;</div>
    <div class="btn btn_r">&gt;</div>
</div>
2.代码——css样式

<style>
    *{
        padding:0px;
        margin:0px;
        list-style:none;
    }
    .banner {
        width:660px;
        height:200px;
        margin:100px auto;
        border:1px solid #808080;
        position:relative;
        overflow:hidden;
    }
    .banner .img{
        width:6600px;
        height:200px;
        position:absolute;
        left:0px;
        top:0px;
    }
    .banner .img img{
        width:660px;
        height:200px;
    }
    .banner .img li{
        float:left;
    }
    .banner .num {
        position:absolute;
        width:100%;
        bottom:10px;
        left:0px;
        text-align:center;
        font-size:0px;
    }
    .banner .num li {
        width:10px;
        height:10px;
        background-color:#888;
        border-radius:50%;
        display:inline-block;
        margin:0px 3px;
        cursor:pointer;}
    .banner .num li.on {
        background-color: #ff6a00;
    }
    .banner .btn {
        width: 30px;
        height: 50px;
        background-color: #808080;
        opacity: 0.5;
        filter:alpha(opacity:0.5);
        position:absolute;top:50%;
        margin-top:-25px;
        cursor:pointer;
        text-align:center;
        line-height:50px;
        font-size:40px;
        color:#fff;
        font-family:"宋体";
        display:none;
    }
    .banner .btn_l {
        left:0px;
    }
    .banner .btn_r {
        right:0px;
    }
    .banner:hover .btn {
        display:block;
    }

</style>
3.代码——js部分

<script>
    $(document).ready(function () {

        var i = 0;

        var clone = $(".banner .img li").first().clone();//克隆第一张图片
        $(".banner .img").append(clone);                //复制到列表最后
        var size = $(".banner .img li").size();         //返回匹配元素的数量
        console.log(size);

        /*循环图片容器的数量,并且向点点按钮的大容器添加几个子节点作为点点按钮*/
        for (var j = 0; j < size-1; j++) {
            $(".banner .num").append("<li></li>");
        }

        $(".banner .num li").first().addClass("on");

        /*自动轮播*/

        var t = setInterval(function () {
            i++;
            move();
            },2000);

        /*鼠标悬停事件*/

        $(".banner").hover(function () {
            clearInterval(t);//鼠标悬停时清除定时器
        }, function () {
            t = setInterval(function () {
                i++;
                move();
                }, 2000); //鼠标移出时开始定时器
        });




        /*鼠标滑入原点事件*/

        $(".banner .num li").hover(function () {

            var index = $(this).index();//获取当前索引值
            i = index;
            $(".banner .img").stop().animate({ left: -index * 660 }, 500);
            $(this).addClass("on").siblings().removeClass("on");
        });



        /*向左按钮*/
        $(".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) * 660 });
                i = size - 2;
            }
            $(".banner .img").stop().animate({ left: -i * 660 }, 660);

            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");
            }
        }
    });
</script>

注意事项:html里面一定要引入jquery的js文件
<script src="../jquery-1.10.2/jquery-1.10.2/jquery.js"></script>


  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是使用 jQuery 的 animate() 方法实现无缝轮播图的示例代码: HTML 代码: ``` <div class="slider"> <ul> <li><img src="image1.jpg"></li> <li><img src="image2.jpg"></li> <li><img src="image3.jpg"></li> <li><img src="image4.jpg"></li> </ul> </div> ``` CSS 代码: ``` .slider { position: relative; overflow: hidden; width: 600px; height: 300px; } .slider ul { position: absolute; left: 0; top: 0; width: 2400px; } .slider li { float: left; width: 600px; height: 300px; } ``` JavaScript 代码: ``` $(function() { var sliderWidth = $('.slider').width(); var slideCount = $('.slider ul li').length; var slideWidth = sliderWidth / slideCount; var currentPosition = 0; $('.slider ul').css('width', slideWidth * slideCount); function moveSlider() { currentPosition -= slideWidth; if (currentPosition == -sliderWidth) { $('.slider ul').css('left', 0); currentPosition = 0; } $('.slider ul').animate({ left: currentPosition }, 500); } var sliderInterval = setInterval(moveSlider, 3000); $('.slider').hover(function() { clearInterval(sliderInterval); }, function() { sliderInterval = setInterval(moveSlider, 3000); }); }); ``` 解释: 1. 初始化一些变量:轮播图容器的宽度、轮播图中图片的数量、每张图片的宽度、当前位置。 2. 设置轮播图 ul 元素的宽度,使所有图片能够在同一行中排列。 3. 编写 moveSlider() 函数,该函数用于根据当前位置移动轮播图,并在移动到最后一张图片时重新回到第一张图片。 4. 使用 setInterval() 函数来定时调用 moveSlider() 函数,实现自动轮播。 5. 在轮播图容器上添加 hover 事件,当鼠标移入时清除轮播定时器,当鼠标移出时重新启动轮播定时器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值