doubleyong
管理员
管理员
  • 最后登录2025-12-02
  • 发帖数1198
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
阅读:7944回复:2

如何使用原生js实现“滑动效果的轮播”分享

楼主#
更多 发布于:2020-04-19 19:22
如下图:

图片:lunbo.png


上面是一个滑动效果的轮播:在我们自己用原生js实现时,在滑动效果的首尾连接的问题最大,下面分享下我的实现思路。

核心步骤如下:
1.改变margin-left来实现滑动效果。
2.再利用节点操作,在实现首尾的连接。


$("#imglist")[0].style.marginLeft="-200px";
           $("#imglist").animate({marginLeft:"0px"},function(){
               $("#imglist img").last().remove()//删除最后一个
               $("#bigImg img").attr("src", $("#imglist img").first().attr('src'));
           }); //进行移动
下面分享一个自己写的DEMO
注:没有写完,样式也比较丑,就不上效果图了。大家直接看代码的思路吧。

代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<style>
    *{
        padding: 0;
        margin: 0;
    }
    #bigImg{
        /*width: 1400px;*/
        height: 530px;
        margin: auto;
        overflow: hidden;
        text-align: center;
    }
    #bigImg img{
        width: auto ;
        height: 100%;
        text-align: center;
    }
    #imgItem{
        width: 90%;
        margin: 0 auto;
    }
    #btnNext{
        top:20px;
        rihgt:20px;
    }
    #btnNext,#btnPrev{
        position: absolute;
        z-index: 2;
    }
    #imgItem{
        position: relative;
        overflow: hidden;
        width: 100%;
        height:180px;
        overflow:hidden;
    }
   #imgItem ul li{
        list-style-type: none;
       width: 180px;
       height: 180px;
       float:left;
       margin-left: 20px;
       overflow: hidden;
       /*border: 1px solid red;*/
       position: relative;
       z-index: 1;
       margin-bottom:20px;
    }
    #imglist{
        /*transition: all 1s linear;*/
        width: 90%;
        margin: auto;
        position: absolute;
        /*z-index: -1;*/
        border: 2px solid green;
    }
    #imglist img{
        width: 180px;
        height: 180px;
        margin-left: 20px;
    }
   #imgItem ul li {
      background-color: transparent;
   }
    li.selected{
        border: 5px solid white;
    }
    #imgItem ul{
        overflow: hidden;
        margin-bottom: 20px;
    }
    #imgItem{
        background-color: #2d2c41;
    }
</style>
<body>
   <div id="lunbo">
       <div id="bigImg">
           <img src="img/1.jpg" alt="">
       </div>
       <div id="imgItem">
           <a id="btnNext">Next</a>
           <a id="btnPrev">Prev</a>
           <div id="imglist">
               <img src="img/1.jpg" alt=""><img src="img/2.jpg" alt=""><img src="img/3.jpg" alt=""><img
                   src="img/4.jpg" alt=""><img src="img/5.jpg" alt=""><img src="img/6.jpg" alt="">
           </div>
           <ul>
               <li class="selected" data-index="0"></li>
               <li data-index="1"></li>
               <li data-index="2"></li>
               <li data-index="3"></li>
               <li data-index="4"></li>
               <li data-index="5"></li>
           </ul>
       </div>
   </div>
   <script src="jquery.min.js"></script>
   <script type="text/javascript">
       var disIndex = 0;
        $("#btnPrev").click(function(){
            var imgList = $("#imglist img");
            var len = $("#imglist img").length;
            $("#imglist").append($("#imglist img").eq(0).clone()); //添加一个到最后
            $("#imglist").animate({marginLeft:"-200px"},function(){
                $("#imglist img").eq(0).remove()//删除第一个
                $("#imglist")[0].style.marginLeft="0px";
                $("#bigImg img").attr("src", $("#imglist img").first().attr('src'));
            }); //进行移动
        })
       $("#btnNext").click(function () {
           var imgList = $("#imglist img");
           var len = $("#imglist img").length;
           $("#imglist").prepend($("#imglist img").last().clone()); // 最后一个加到第一个
           $("#imglist")[0].style.marginLeft="-200px";
           $("#imglist").animate({marginLeft:"0px"},function(){
               $("#imglist img").last().remove()//删除最后一个
               $("#bigImg img").attr("src", $("#imglist img").first().attr('src'));
           }); //进行移动
       });
        $("#imgItem ul li").click(function () {
            var index = $(this).attr("data-index");
            for(var i=0;i<index;i++){
                $("#btnPrev").click();
            }
        })
   </script>
</body>
</html>
知识需要管理,知识需要分享
doubleyong
管理员
管理员
  • 最后登录2025-12-02
  • 发帖数1198
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
沙发#
发布于:2020-04-20 16:31
哈哈,后面优化哈,能使用这个思路就好,写的有点充忙,见谅了
知识需要管理,知识需要分享
真知棒、
侠客
侠客
  • 最后登录2021-05-12
  • 发帖数36
  • 社区居民
板凳#
发布于:2020-04-20 10:43
这个似乎有点小问题,当直接点击图片进行切换的时候就会出现图片复制现象。
游客


返回顶部

公众号

公众号