用jquery来实现轮播图效果

效果展示
在这里插入图片描述
首先就是布局,在这里面我们会使用div,ul,li等多个标签,

一.html部分的代码如下

 <div class="bigbox">
        <div class="dianji">
            <li class="left">&lt;</li>
            <li class="right">
                &gt;
            </li>
        </div>
        <ul>
            <!-- 真正要轮播的只有这5张图片 -->
            <li>
                <img src="imagess3/gui.jpg" alt="">
            </li>
            <li>
                <img src="imagess3/other.jpg" alt="">
            </li>
            <li>
                <img src="imagess3/huo2.jpg" alt="">
            </li>
            <li>
                <img src="imagess3/long.jpg" alt="">
            </li>
            <li>
                <img src="imagess3/qian.jpg" alt="">
            </li>
        </ul>
        <ol>
            <li class="current"></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ol>
    </div>

注意我们要在最后加上一张和第一张重复的图片,方便后续功能的实现
ol中装的li时下面的小圆点,left,right分别就是左右切换按钮

二 .css部分如下

 <style>
        /* 首先要去除默认浏览器的样式 */
        
        * {
            margin: 0px;
            padding: 0px;
        }
        
        li {
            list-style: none;
        }
        
        .bigbox {
            cursor: pointer;
            overflow: hidden;
            position: relative;
            width: 720px;
            height: 450px;
            background-color: pink;
            margin: 150px auto;
        }
        /* 设置盒子的宽度,,让其在页面中间的位置显示,并且增加绝对定位, */
        /* 为后面左右箭头的设置铺垫 */
        /* 左右箭头设置绝对定位,子绝父相*/
        .bigbox ul {
            position: absolute;
            left: 0px;
            width: 5000px;
            height: 455px;
        }
        /* 给ul中的宽度设置的宽一些 */
        /* ,因为我们刚开始为了方便观看要将多个图片在一行显示 */
        
        .bigbox ul li {
            width: 720px;
            float: left;
        }
        /* 让每一个li浮动,并且设置宽度和大盒子bigbox一样宽 */
        
        .bigbox .dianji li {
            display: none;
            z-index: 99;
            cursor: pointer;
            position: absolute;
            top: 200px;
            width: 25px;
            height: 35px;
            color: #fff;
            line-height: 35px;
            text-align: center;
            border-radius: 8px;
            background-color: rgba(0, 0, 0, .4);
        }
        /* 注意我们要给左右两个点击事件增加绝对定位, */
        /* 然后给他们的父级元素增加相对定位,来实现位置的设置 */
        
        .bigbox .left {
            left: 0px;
        }
        
        .bigbox .right {
            right: 0px;
        }
        /* 设置两个切换按钮的位置 */
       /* 注意他们两个相同的一些属性我放在了一起集中统一写了*/
        .bigbox ol {
            position: absolute;
            bottom: 30px;
            left: 60px;
            display: flex;
            align-items: center;
            justify-content: center;
            width: 80px;
            height: 15px;
            border-radius: 5px;
            background-color: rgba(0, 0, 0, .3);
        }
        /* 设置ol的位置,采用了flex布局来实现子元素的水平和垂直居中 */
        /* 同时也采用了绝对定位来设置位置 */
        
        .bigbox .current {
            background-color: #ff5000
        }
        
        .bigbox ol li {
            cursor: pointer;
            float: left;
            margin: 0px 3px;
            width: 8px;
            height: 8px;
            border-radius: 50%;
            background-color: #fff;
        }
        /* 对ol中的li的设置,也就是对小圆点的设置 */
    </style>

三. jQuery实现

废话不多i说,直接上代码

  <script>
        $(function() {
            var index = 0;
            // 建立图片的索引号
            var timer = null;
            //   建立一个定时器
            var option = $('.bigbox>ul>li').length;
            // 获取轮播的图片的长度
            var $li = $('<li><img src = "imagess3/gui.jpg" alt = ""</li>')
            $('.bigbox>ul').append($li);
            // 新建一个图片和第一张重复,追加到最后面
            var imgwidth = $('.bigbox ul li').width();
            //获取图片的宽度
            //当鼠标移入时两侧的箭头显现,移除时消失并且移入时定时器停止,移            除时定时器开启
            $(".bigbox").hover(function() {
                $(".dianji li").show();
                clearInterval(timer)
            }, function() {
                $(".dianji li").hide();
                go();

            })
            console.log(option);
     //设置定时器,并用go函数封装,实现函数的自动播放
            function go() {
                timer = setInterval(function() {
                    if (index < option) {
                        index++;
                        // 当索引号小于图片张数时,索引号加一
                        $(".bigbox ul").stop().animate({
                            left: -imgwidth * index + 'px'
                        })
                    }
                    if (index == option) {
                        $(".bigbox ul").stop().animate({
                                left: -imgwidth * index + 'px'
                            })

                        index = 0;
                        $(".bigbox ul").animate({
                            left: -imgwidth * index + 'px'
                        }, 0)
                    }
                    console.log(index);
                    //  实现下边小圆点的切换
                    $("ol li").eq(index).addClass('current').siblings().removeClass();
                }, 3000)
            }
      //右侧点击事件
            function right() {
               $(".right").click(function() {
                if (index < option) {
                 index++;
                // 当索引号小于图片张数时,索引号加一
                   $(".bigbox ul").stop().animate({
                    left: -imgwidth * index + 'px'
                      })
                  }
                if (index == option) {
                $(".bigbox ul").stop().animate({
                 left: -imgwidth * index + 'px'
                        })
 //当索引号等于图片张数时,这时候放到了重复的那张图片.这个时候可以先执行动画函数让其到这张重复的图片,
//然后让索引号变为0,快速的跳转到真正第一张图
                 index = 0;
                 $(".bigbox ul").animate({
                 left: -imgwidth * index + 'px'
                    }, 0)
                   }
                    console.log(index);
                    //  实现下边小圆点的切换
                    $("ol li").eq(index).addClass('current').siblings().removeClass();
                })
            }
            right();
            //调用函数right
            // 左侧点击事件
            function left() {
              $(".left").click(function() {
              if (index > 0) {
                 index--;
                $(".bigbox ul").animate({
                 left: -imgwidth * index + 'px'
                   })
                } else if (index == 0) {
                    index = option;
                  $(".bigbox ul").animate({
                    left: -imgwidth * index + 'px'
                     }, 0)
                    index = option - 1;
                    $('.bigbox ul').animate({
                     left: -imgwidth * index + 'px'
                     })
                  }
 //同样的在左侧点击事件中,当此时是在第一张图时,让index=option(图片书)
 //相当于是最后一张虚拟图(和第一张重复)
 //那么先快速的跳转到虚拟的第一张图,然后让索引号减一。
 //接下来在执行动画函数,此时就切换到了最后一张图
                    $("ol li").eq(index).addClass('current').siblings().removeClass();
                    console.log(index);
                })
            }
            left();
            //调用函数left
            // 点击小圆点实现图片的跳转
            $("ol li").click(function() {
                index = $(this).index();
                $(".bigbox ul").animate({
                    left: -imgwidth * index + 'px'
                })
  $("ol li").eq(index).addClass('current').siblings().removeClass();
            })
        })
    </script>
  • 6
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是一个简单的使用jquery实现图片轮播效果的例子: HTML代码: ```html <div class="slider"> <img src="image1.jpg" alt="Image 1"> <img src="image2.jpg" alt="Image 2"> <img src="image3.jpg" alt="Image 3"> </div> ``` CSS代码: ```css .slider { position: relative; width: 500px; height: 300px; overflow: hidden; } .slider img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; transition: opacity 1s ease-in-out; } .slider img.active { opacity: 1; } ``` jQuery代码: ```javascript $(document).ready(function() { // 默认显示第一张图片 $('.slider img:first').addClass('active'); // 自动轮播 setInterval(function() { var $active = $('.slider img.active'); var $next = $active.next(); if (!$next.length) { $next = $('.slider img:first'); } $active.removeClass('active'); $next.addClass('active'); }, 2000); }); ``` 解释: 首先,我们将所有图片放在一个 div 容器中,并设置容器的宽度和高度。然后,我们使用 CSS 将所有图片设置为绝对定位,并设置它们的透明度为 0。在当前活动的图片上添加一个“active”类,以便我们可以在 jQuery 中轻松地找到它。 在 jQuery 中,我们为轮播设置了一个定时器,每隔 2 秒钟就会执行一次。在每次执行时,我们找到当前活动的图片并将其“active”类删除。然后,我们找到下一张图片并将其添加到“active”类中。如果我们到达了最后一张图片,我们将下一张图片设置为第一张图片。 最后,我们在文档准备就绪时设置第一张图片为活动图片,并开始自动轮播。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

古风残影

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值