当前位置: 移动技术网 > IT编程>开发语言>Jquery > JQuery实现轮播图及其原理

JQuery实现轮播图及其原理

2018年08月18日  | 移动技术网IT编程  | 我要评论
源码: 效果图: 原理: 页面结构方面: 将轮播图容器设置成相对定位,宽度设置成图片的宽度;容器中分为四部分:轮播的图片;点击的小按钮;前一张;后一张 样式方面: 轮播图容器为相对定位,宽度/高度设置成图片的宽度/高度,设置overflow为hidden; 容器中的每一部分都设置成绝对定位,放到相应 ...

源码:

<!doctype html>
<html>

<head>
    <meta charset="utf-8" name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>jquery轮播图</title>
    <style>
        *{
            padding:0;
            margin:0;
        }
        .container{
            width:600px;
            height:400px;
            overflow: hidden;
            position:relative;
            margin:0 auto;
        }
        .list{
            width:3000px;
            height:400px;
            position:absolute;

        }
        .list>img{
            float:left;
            width:600px;
            height:400px;
        }
        .pointer{
            position:absolute;
            width:100px;
            bottom:20px;
            left:250px;
        }
        .pointer>span{
            cursor:pointer;
            display:inline-block;
            width:10px;
            height:10px;
            background: #7b7d80;
            border-radius:50%;
            border:1px solid #fff;
        }
        .pointer .on{
            background: #28a4c9;
        }
        .arrow{
            position:absolute;
            text-decoration:none;
            width:40px;
            height:40px;
            background: #727d8f;
            color:#fff;
            font-weight: bold;
            line-height:40px;
            text-align:center;
            top:180px;
            display:none;
        }
        .arrow:hover{
            background: #0f0f0f;
        }
        .left{
          left:0;
        }
        .right{
            right:0;
        }
        .container:hover .arrow{
            display:block;
        }
    </style>
</head>

<body>
    <div class="container">
        <div class="list" style="left:0px;">
            <!--<img src="../static/image/photo1.jpg" alt="5"/>-->
            <img src="../static/image/banner.jpg" alt="1"/>
            <img src="../static/image/slide1.jpg" alt="2"/>
            <img src="../static/image/slide1.jpg" alt="3"/>
            <img src="../static/image/slide1.jpg" alt="4"/>
            <img src="../static/image/photo1.jpg" alt="5"/>
            <!--<img src="../static/image/banner.jpg" alt="1"/>-->
        </div>
        <div class="pointer">
            <span index="1" class="on"></span>
            <span index="2"></span>
            <span index="3"></span>
            <span index="4"></span>
            <span index="5"></span>
        </div>
        <a href="#" class="arrow left">&gt;</a>
        <a href="#" class="arrow right">&lt;</a>
    </div>

    <script src="../static/js/jquery-3.2.1.min.js"></script>
    <script>
        var imgcount = 5;
        var index = 1;
        var intervalid;
        var buttonspan = $('.pointer')[0].children;//htmlcollection 集合
        //自动轮播功能 使用定时器
        autonextpage();
        function autonextpage(){
            intervalid = setinterval(function(){
                nextpage(true);
            },3000);
        }
        //当鼠标移入 停止轮播
        $('.container').mouseover(function(){
            console.log('hah');
            clearinterval(intervalid);
        });
        // 当鼠标移出,开始轮播
        $('.container').mouseout(function(){
            autonextpage();
        });
        //点击下一页 上一页的功能
        $('.left').click(function(){
            nextpage(true);
        });
        $('.right').click(function(){
            nextpage(false);
        });
        //小圆点的相应功能  事件委托
        clickbuttons();
        function clickbuttons(){
            var length = buttonspan.length;
            for(var i=0;i<length;i++){
                buttonspan[i].onclick = function(){
                    $(buttonspan[index-1]).removeclass('on');
                    if($(this).attr('index')==1){
                        index = 5;
                    }else{
                        index = $(this).attr('index')-1;
                    }
                    nextpage(true);

                };
            }
        }
        function nextpage(next){
            var targetleft = 0;
            //当前的圆点去掉on样式
            $(buttonspan[index-1]).removeclass('on');
            if(next){//往后走
                if(index == 5){//到最后一张,直接跳到第一张
                    targetleft = 0;
                    index = 1;
                }else{
                    index++;
                    targetleft = -600*(index-1);
                }

            }else{//往前走
                if(index == 1){//在第一张,直接跳到第五张
                    index = 5;
                    targetleft = -600*(imgcount-1);
                }else{
                    index--;
                    targetleft = -600*(index-1);
                }

            }
            $('.list').animate({left:targetleft+'px'});
            //更新后的圆点加上样式
            $(buttonspan[index-1]).addclass('on');


        }


    </script>
</body>

</html>

效果图:

原理:

页面结构方面:

  • 将轮播图容器设置成相对定位,宽度设置成图片的宽度;容器中分为四部分:轮播的图片;点击的小按钮;前一张;后一张

样式方面:

  • 轮播图容器为相对定位,宽度/高度设置成图片的宽度/高度,设置overflow为hidden;
  • 容器中的每一部分都设置成绝对定位,放到相应的位置;
  • 轮播图片的容器宽度设置成所有图片的宽度和,left开始先设置为0;
  • 每张图片宽度一样,都设成左浮动,左右图片都在一行排列,所以轮播图的实质是装有图片的容器的移动,每次移动的距离为一张图片的宽度,这样每次就只显示一张图片;
  • 前一张/后一张设置成display为none,当鼠标移入总容器时,再设置成display为block

功能方面:

  • 自动轮播为一个定时循环机制setinteval,鼠标移入,循环停止,移除循环继续;

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网