用juqery实现的简单轮播图

这几天一直有需要用到轮播图的需求。之前也没写过,索性自己写一个自己的轮播图轮子。

目前是实现了自动轮播,按左右箭头和序列点可以左右跳转和固定跳转图片。

感觉目前也没什么很缺的功能了,轮播图的要求大部分也就以上三点。

我的轮播图的实现思路是通过图片的显示隐藏配合图片的变换动画,我还有看到是通过调整图片条的显示范围来达到轮播图的效果和通过层级显示来达到相同效果的。

以下是代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>轮播图轮子</title>
    <script type="text/javascript" src="JS/jquery-3.4.1.min.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .lunbo-body {
            position: relative;
            max-width: 80%;
            height: 400px;
            margin: 200px auto;
        }

        .lunbo-content {
            position: relative;
            width: 100%;
            height: 100%;
        }

        .lunbo-content >img{
            position: absolute;
            display: none;
            width: 100%;
            height: 100%;
            opacity: 1;
        }

        .lunbo-content .lunbo-content-img {
            position: absolute;
            display: block;
            opacity: 1;
            transition: 2S;
        }

        .lunbo-xulie {
            position: absolute;
            width: auto;
            bottom: 20px;
            left: 50%;
            transform: translateX(-50%);
            text-align: center;
            padding: 0 10px;
            border: solid #FFF 1px;
            border-radius: 20px;
        }

        li {
            display: inline-block;
            width: 8px;
            height: 8px;
            border-radius: 50%;
            border: solid #FFF 1px;
            line-height: 8px;
        }

        .lunbo-xulie-son {
            background-color: #FFF;
        }

        .button-left {
            display: none;
            position: absolute;
            width: 50px;
            height: 80px;
            background-color: #EDEFF4;
            left: 20px;
            top: 50%;
            transform: translateY(-50%);
            text-align: center;
            opacity: 0.3;
        }

        .button-right {
            display: none;
            position: absolute;
            width: 50px;
            height: 80px;
            background-color: #EDEFF4;
            right: 20px;
            top: 50%;
            transform: translateY(-50%);
            text-align: center;
            opacity: 0.3;
        }
        .button-left img{
            position: absolute;
            width: 20px;
            height: 20px;
            top: 50%;
            transform: translateY(-50%);
        }
        .button-right img{
            position: absolute;
            width: 20px;
            height: 20px;
            top: 50%;
            transform: translateY(-50%);
        }
    </style>
</head>
<body>
<div class="lunbo-body">
    <div class="lunbo-content">
        <img src="image/MIX1.jpg" alt="第一张图片" class="lunbo-content-img">
        <img src="image/MIX2.jpg" alt="第二张图片">
        <img src="image/MIX3.jpg" alt="第三张图片">
        <img src="image/MIX4.jpg" alt="第四张图片">
        <img src="image/MIX5.jpg" alt="第五张图片">
    </div>
    <ul class="lunbo-xulie">
        <li class="lunbo-xulie-son"></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </ul>
    <div class="button-left"><img src="image/jiantou4.png"></div>
    <div class="button-right"><img src="image/jiantou3.png"></div>
</div>
</body>
<script>
    $(function () {
        var img = $('.lunbo-content img');
        var lis = $('.lunbo-xulie li');
        var ismore = 0;
        /*重置图片和序列的样式*/
        function clearImg() {
            for (var i = 0; i < img.length; i++) {
                img.removeClass('lunbo-content-img');
                lis.removeClass('lunbo-xulie-son');
            }
            img.eq(ismore).addClass('lunbo-content-img');
            lis.eq(ismore).addClass('lunbo-xulie-son');
        };
        /*循环执行样式的重置和判断是否循环完所有样式*/
        function doThing() {
            ismore++;
            if (ismore == img.length) {
                ismore = 0;
            }
            clearImg();
        };
        /*定时器3S一次*/
        var dingShiQi = setInterval(doThing, 2000);
        /*鼠标移入时*/
        $(".lunbo-body").mouseover(function () {
            clearInterval(dingShiQi);
            $('.button-left').css('display', 'block');
            $('.button-right').css('display', 'block');
        });
        /*鼠标移除*/
        $(".lunbo-body").mouseleave(function () {
            dingShiQi = setInterval(doThing, 2000);
            $('.button-left').css('display', 'none');
            $('.button-right').css('display', 'none');
        });
        /*上一张图片*/
        $('.button-left').on('click', function () {
            ismore -= 1;
            if (ismore <= -1) {
                ismore = 4;
            }
            img.removeClass('lunbo-content-img');
            lis.removeClass('lunbo-xulie-son');
            img.eq(ismore).addClass('lunbo-content-img');
            lis.eq(ismore).addClass('lunbo-xulie-son');
        });
        /*下一张图片*/
        $('.button-right').on('click', function () {
            ismore += 1;
            if (ismore >= 5) {
                ismore = 0;
            }
            img.removeClass('lunbo-content-img');
            lis.removeClass('lunbo-xulie-son');
            img.eq(ismore).addClass('lunbo-content-img');
            lis.eq(ismore).addClass('lunbo-xulie-son');
        });
        /*用序列行控制图片*/
        $("li").click(function () {
            var sum = $(this).index();
            img.removeClass('lunbo-content-img');
            lis.removeClass('lunbo-xulie-son');
            img.eq(sum).addClass('lunbo-content-img');
            lis.eq(sum).addClass('lunbo-xulie-son');
        });
    });
</script>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值