jQuery实现轮播图效果

大概思路:

在div里存放ul(li),注意div设置相对定位,ul设置绝对定位,因为ul到了后面需要轮播移动。li需要设置float:left。设置li里的img宽高分别为560px,300px。最后面需要拼接一个假的图0(方便最后图和第一图的转变)。
在div里存放另一个div,左右按钮。通过绝对定位,定位到左右两边合适的距离。
在div里存放另一个div,轮播图下面的小圆点,图片移动的时候,小圆点的颜色也会跟着“移动”。

最初,设置index为0。
当点击右按钮的时候,index++。ul移动的距离为(-560index)。当点击最后图的时候,假0显示完全后,直接回到真0的位置
当点击左按钮的时候,index–。ul移动的距离为(-560
index)。当点击第一图的时候,瞬间来到假0的位置(方便来到最后一个图)。index设置为最后一个图的index。

程序:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<style>
    *{
        margin:0;
        padding:0;
    }
    .big{
        width:560px;
        height:300px;
        position: relative;
        margin:200px auto;
        border:10px solid red;
    }
    .big .move{
        width:5600px;
        height:300px;
        position: absolute;
        left:0;
        top:0;
    }
    .big  ul li{
        float: left;
        list-style: none;
    }
    img{
        width:560px;
        height:300px;
    }

    .btn div{
        width:40px;
        height:60px;
        background: red;
        position: absolute;
        top:50%;
        margin-top:-30px;
    }
    .rightbtn{
        right:0;
    }

    .circle{
        position: absolute;
        left:20px;
        bottom:15px;
    }
    .circle ul{
        overflow: hidden;
        list-style: none;

    }
    .circle ul li{
        background: white;
        float: left;
        margin-right:10px;
        width:20px;
        height:20px;
        border-radius: 50%;
    }


</style>
<body>
<div class="big">

    <ul class="move">
        <li> <img src="img/0.jpg" alt=""> </li>
        <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/0.jpg" alt=""> </li>
    </ul>

    <div class="btn">
        <div class="leftbtn"> < </div>
        <div class="rightbtn"> > </div>
    </div>

    <div class="circle">
        <ul class="circleUl">
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div>

</div>


<script src="js/jquery-1.12.3.min.js"> </script>
<script>
    $('.circleUl li').eq(0).css("background","red");
    var index = 0;

    $(".leftbtn").click(function(){
        index--;
        if(index<0){
//            当图0按左按钮,瞬间来到假0的位置,方便来到最后一个图。
            index = 3;
            $(".move").css("left",-560*4);
        }
        $(".move").animate( {left:-560*index} ,1000);
        $('.circleUl li').eq(index).css("background","red").siblings().css("background","white");;
    });

    $(".rightbtn").click (function() {
        index++;
        $(".move").animate({left:-560*index},1000,function(){
            if(index == 4){
//                当到最后一个图的时候(真的图三),在按右按钮,假0显示完全后,回到真0的位置
                index = 0;
                $(".move").css("left",0);
            }
        });
        $('.circleUl li').eq(index==4?0:index).css("background","red").siblings().css("background","white");
    });



    $('.circleUl li').click(function(){
        console.log( $(this).index() );
        $('.circleUl li').eq( $(this).index()).css("background","red").siblings().css("background","white");

        var index = $(this).index();
        $('.move').animate({left:index*(-560)},1000);
    })

</script>

</body>
</html>

运行结果:

在这里插入图片描述

相同功能代码封装函数:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<style>
    *{
        margin:0;
        padding:0;
    }
    .big{
        width:560px;
        height:300px;
        position: relative;
        margin:200px auto;
        border:10px solid red;
    }
    .big .move{
        width:5600px;
        height:300px;
        position: absolute;
        left:0;
        top:0;
    }
    .big  ul li{
        float: left;
        list-style: none;
    }
    img{
        width:560px;
        height:300px;
    }

    .btn div{
        width:40px;
        height:60px;
        background: red;
        position: absolute;
        top:50%;
        margin-top:-30px;
    }
    .rightbtn{
        right:0;
    }

    .circle{
        position: absolute;
        left:20px;
        bottom:15px;
    }
    .circle ul{
        overflow: hidden;
        list-style: none;

    }
    .circle ul li{
        background: white;
        float: left;
        margin-right:10px;
        width:20px;
        height:20px;
        border-radius: 50%;
    }


</style>
<body>
<div class="big">

    <ul class="move">
        <li> <img src="img/0.jpg" alt=""> </li>
        <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/0.jpg" alt=""> </li>
    </ul>

    <div class="btn">
        <div class="leftbtn"> < </div>
        <div class="rightbtn"> > </div>
    </div>

    <div class="circle">
        <ul class="circleUl">
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div>

</div>


<script src="js/jquery-1.12.3.min.js"> </script>
<script>
    $('.circleUl li').eq(0).css("background","red");
    var index = 0;

    $(".leftbtn").click(function(){
        index--;
        move();
    });

    $(".rightbtn").click (function() {
        index++;
        move();
    });


    function move(){
//        左边按钮部分
        if(index<0){
//            当图0按左按钮,瞬间来到假0的位置,方便来到最后一个图。
            index = 3;
            $(".move").css("left",-560*4);
        }
//        其中,左边按钮部分的ul移动和小圆点变色与右边按钮的ul移动和小圆点变色“合并”了。
//        右边按钮部分
        $(".move").animate({left:-560*index},1000,function(){
            if(index == 4){
//                当到最后一个图的时候(真的图三),在按右按钮,假0显示完全后,回到真0的位置
                index = 0;
                $(".move").css("left",0);
            }
        });
        $('.circleUl li').eq(index==4?0:index).css("background","red").siblings().css("background","white");

    }



//    小圆点点击事件
    $('.circleUl li').click(function(){
        console.log( $(this).index() ); 
        $(this).css("background","red").siblings().css("background","white");
//被点击的小圆点的index索引值 赋值给index,为了左右按钮里的index值得正确性。
        var index = $(this).index();
        $('.move').animate({left:index*(-560)},1000);
    })

</script>

</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值