JavaScript实现轮播图的播放

网站常见的轮播图的实现(引入jQuery库)

1、在网站上常常可以看见自动播放的轮播图,导航下面的轮播图已是屡见不鲜的事了。
比如这种:
在这里插入图片描述
又如这种:
在这里插入图片描述

2、轮播图功能的设计:

设计的轮播图能在每2s自动播放一张图片,从第一张开始播放,播放完最后一张图片后又返回第一张播放,无限重复此过程。
在这里插入图片描述


点击下面的方块能切换至对应的图片,并且暂停(暂停后不自动播放下一张图片)显示该图片,离开方块时轮播图又从该位置自动播放。
在这里插入图片描述


点击左右两边的箭头能返回上一张、下一张图片,不暂停显示该图片,紧接着轮播图从该图片自动播放。
在这里插入图片描述

3、代码分布实现
html结构(记得引入jQuery库,库文件可从官网下载,也可在本博客底部分享的链接获取【含轮播图实现的全部代码】)
整体一个div,里面包含一个ul【ul下面是li包含5张图片】,然后是一个section【section里面也是ul,放5个小方块】,最后是存放左右两个箭头的div!

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>轮廓图实现</title>
    <script src="jquery-3.4.1.js"></script>   <!--引入jQuery库-->
</head>
<body>
   
    <div id="box">
        <ul>
            <li><img src="./images/1.jpg"></li>
            <li><img src="./images/2.jpg"></li>
            <li><img src="./images/3.jpg"></li>
            <li><img src="./images/4.png"></li>
            <li><img src="./images/5.jpg"></li>
        </ul>
        <section>
            <ul class="num">
                <li class="current"></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
            </ul>
            
        </section>
        <div class="left hide"><</div>
        <div class="right hide">></div>
    </div>
</body>
</html>

加入css样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>轮廓图实现</title>
    <script src="jquery-3.4.1.js"></script>   <!--引入jQuery库-->
    <style>
        ul,li,img{
            padding:0px;
            margin:0px;
            list-style: none;
        }
        #box{
            width:800px;
            height:400px;
            /* border:1px solid red; */
            position: absolute;
            top:5%;
            left:calc(50% - 400px);
            overflow: hidden;
        }
        #box>ul{
            width:4019px;
            height:400px;
            /* border: 1px solid yellow; */
        }
        #box>ul>li{
            display: inline;
        }
        #box>ul>li>img{
            width:800px;
            height:400px; 
        }
        #box>section{
            position: absolute;
            width:100px;
            height:20px;
            left:calc(50% - 100px / 2);
            bottom: 3.5%;
            /* border:1px solid red; */
        }
        .num>li{
            display: inline-block;
            margin-right: 2px;
            width:13px;
            height:13px;
            text-align: center;
            background-color: #ccc;
            cursor: pointer;
        }
        #box>div{
            width:30px;
            height:58px;
            /* border:1px solid red; */
            text-align: center;
            line-height: 58px;
            font-size: 24px;
            background-color: #000;
            opacity: 0.5;
            color:#ccc;
            cursor: pointer;
        }
        .left{
            position: absolute;
            left:0px;
            top:calc(50% - 58px / 2);
        }
        .right{
            position: absolute;
            right: 0px;
            top:calc(50% - 58px / 2);
        }
        .hide{
            display: none;
        }
        .num>.current{
            background-color:red;
        }
    </style>
</head>
<body>
   
    <div id="box">
        <ul>
            <li><img src="./images/1.jpg"></li>
            <li><img src="./images/2.jpg"></li>
            <li><img src="./images/3.jpg"></li>
            <li><img src="./images/4.png"></li>
            <li><img src="./images/5.jpg"></li>
        </ul>
        <section>
            <ul class="num">
                <li class="current"></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
            </ul>
            
        </section>
        <div class="left hide"><</div>
        <div class="right hide">></div>
    </div>
</body>
</html>

初步实现后:
在这里插入图片描述
加入JavaScript代码:

 <script>
         var i=0;
         var timer;
        // 开启轮播
        function startLunBo(i){
            $("#box>ul>li").eq(i).show().siblings("li").hide();
            $("#box>section>ul>li").eq(i).addClass("current").siblings().removeClass("current");
        }
        
        function autoBo(){
            timer = setInterval(function(){
                i++;
                if(i==5){
                    i=0;
                }
                startLunBo(i);
            },2000)
        }

        //页面加载事件
        $(function(){
            autoBo();   //自动播放
            // 鼠标放上去事件
            $(".num>li").mouseover(function(){
                clearInterval(timer);    //停止轮播
                i=$(this).index();      //获取当前图片下标索引
                startLunBo(i)
            })

            // 鼠标离开事件
            $(".num>li").mouseout(function(){
                i=$(this).index();      //获取当前图片下标索引
                autoBo();         //开启自动播放
            })

            $("#box").hover(function(){
                $(".hide").css("display","block");
            },function(){
                $(".hide").css("display","none");
            })

            // 向左切换图片
            $(".left").click(function(){
                clearInterval(timer);
                i--;
                if(i==-1){
                    i=4;
                }
                startLunBo(i)
                autoBo();         //开启自动播放
            })
            // 向右切换图片
            $(".right").click(function(){
                clearInterval(timer);
                i++;
                if(i==5){
                    i=0;
                }
                startLunBo(i)
                autoBo();         //开启自动播放
            })
        })

    </script>

4、总体代码实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>轮廓图实现</title>
    <script src="jquery-3.4.1.js"></script>   <!--引入jQuery库-->
    <style>
        ul,li,img{
            padding:0px;
            margin:0px;
            list-style: none;
        }
        #box{
            width:800px;
            height:400px;
            /* border:1px solid red; */
            position: absolute;
            top:5%;
            left:calc(50% - 400px);
            overflow: hidden;
        }
        #box>ul{
            width:4019px;
            height:400px;
            /* border: 1px solid yellow; */
        }
        #box>ul>li{
            display: inline;
        }
        #box>ul>li>img{
            width:800px;
            height:400px; 
        }
        #box>section{
            position: absolute;
            width:100px;
            height:20px;
            left:calc(50% - 100px / 2);
            bottom: 3.5%;
            /* border:1px solid red; */
        }
        .num>li{
            display: inline-block;
            margin-right: 2px;
            width:13px;
            height:13px;
            text-align: center;
            background-color: #ccc;
            cursor: pointer;
        }
        #box>div{
            width:30px;
            height:58px;
            /* border:1px solid red; */
            text-align: center;
            line-height: 58px;
            font-size: 24px;
            background-color: #000;
            opacity: 0.5;
            color:#ccc;
            cursor: pointer;
        }
        .left{
            position: absolute;
            left:0px;
            top:calc(50% - 58px / 2);
        }
        .right{
            position: absolute;
            right: 0px;
            top:calc(50% - 58px / 2);
        }
        .hide{
            display: none;
        }
        .num>.current{
            background-color:red;
        }
    </style>
</head>
<body>
    <script>
        var i=0;
        var timer;
       // 开启轮播
       function startLunBo(i){
           $("#box>ul>li").eq(i).show().siblings("li").hide();
           $("#box>section>ul>li").eq(i).addClass("current").siblings().removeClass("current");
       }
       
       function autoBo(){
           timer = setInterval(function(){
               i++;
               if(i==5){
                   i=0;
               }
               startLunBo(i);
           },2000)
       }

       //页面加载事件
       $(function(){
           autoBo();   //自动播放
           // 鼠标放上去事件
           $(".num>li").mouseover(function(){
               clearInterval(timer);    //停止轮播
               i=$(this).index();      //获取当前图片下标索引
               startLunBo(i)
           })

           // 鼠标离开事件
           $(".num>li").mouseout(function(){
               i=$(this).index();      //获取当前图片下标索引
               autoBo();         //开启自动播放
           })

           $("#box").hover(function(){
               $(".hide").css("display","block");
           },function(){
               $(".hide").css("display","none");
           })

           // 向左切换图片
           $(".left").click(function(){
               clearInterval(timer);
               i--;
               if(i==-1){
                   i=4;
               }
               startLunBo(i)
               autoBo();         //开启自动播放
           })
           // 向右切换图片
           $(".right").click(function(){
               clearInterval(timer);
               i++;
               if(i==5){
                   i=0;
               }
               startLunBo(i)
               autoBo();         //开启自动播放
           })
       })

   </script>
    <div id="box">
        <ul>
            <li><img src="./images/1.jpg"></li>
            <li><img src="./images/2.jpg"></li>
            <li><img src="./images/3.jpg"></li>
            <li><img src="./images/4.png"></li>
            <li><img src="./images/5.jpg"></li>
        </ul>
        <section>
            <ul class="num">
                <li class="current"></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
            </ul>
            
        </section>
        <div class="left hide"><</div>
        <div class="right hide">></div>
    </div>
</body>
</html>

本博客代码所用的jQuery文件和图片及其源代码:

链接:https://pan.baidu.com/s/1jVPt8eJNFESYv_DtK-etoQ
提取码:ro0p
复制这段内容后打开百度网盘手机App,操作更方便哦

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值