基于jQuery实现幻灯片切换效果

效果图

在这里插入图片描述

功能:1、幻灯片自动切换;2、点击下方小圆点切换对应幻灯片;3、点击左右两侧耳朵控制幻灯片切换至上一张或下一张;4、鼠标悬停幻灯片上时,幻灯片停止切换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>标题</title>
    <link rel="stylesheet" href="../css/reset.css">
    <script src="./jquery-3.4.1.min.js"></script>
    <style type="text/css">
        #box{
            width: 100%; height: 350px;
            margin-top: 100px;
        }
        .bg0{background: #0D2736;}
        .bg1{background: #0F0909;}
        .bg2{background: #283F75;}
        .bg3{background: #405CDA;}
        #slide{
            width: 800px; height: 350px; 
            margin: 0 auto;
            position: relative;
            overflow: hidden;
         }
        #zxw{
            width: 4000px; height: 35px;
            position: absolute; top: 0; left: 0px;
        }
        #zxw li{
            float: left;
        }
        #zxw li a{
            display: block; width: 800px; height: 350px;
            position: relative;
        }
        #zxw li a img{
            width: 100%; height: 100%;
        }
         /* --------- */
        #zxw li a span{
            font-size: 150px; text-align: center;
            position: absolute; color: #fff;top: 100px; left: 350px;
        }
         /* ----------- */
        #nav{
            width: 160px; height: 20px;
            position: absolute; bottom: 10px; left: 50%;
            margin-left: -80px;
        }
        #nav li{
            width: 20px; height: 20px; 
            border-radius: 50%;
            background: #ccc; 
            float: left;
            margin: 0 10px;
            cursor: pointer;
        }
        #nav .active{
            background: blue;
        }
        #prev, #next{
            width: 25px; height: 50px;
            background: #fff;
            position: absolute; top: 150px;
            cursor: pointer;
        }
        #prev{
            left: 10px;
        }
        #next{
            right: 10px;
        }
        #prev img, #next img{
            width: 100%; height: 100%;
        }
    </style>
    <script>
        $(function(){
            // 全局变量
            var c = 0;
            var zxw = $("#zxw li");
            var nav = $("#nav li");
           
            // 定义幻灯片自动切换效果
            function ziDongQieHuan(){
                c++;    //c = 1 2
                if(c == zxw.length){
                    c = 1;
                    $("#zxw").css({left:0});
                }
                $("#zxw").animate({left:c*-800+"px"}, 500);
                
                // 定义小圆点和背景颜色自动切换效果
                if(c == nav.length){
                    $("#nav li").eq(0).addClass("active").siblings("li").removeClass("active");
                    $("#box").attr("class", "bg0")
                }else{
                    $("#nav li").eq(c).addClass("active").siblings("li").removeClass("active");
                    $("#box").attr("class", "bg"+c);
                };

            };

            // 定义点击小圆点切换效果
            function dianJiQieHuan(obj){
                // 获取当前点击对象的下标值
                c = obj.index();
                $("#nav li").eq(c).addClass("active").siblings("li").removeClass("active");
                $("#zxw").animate({left:c*-800+"px"}, 500);
                $("#box").attr("class", "bg"+c);
            };

            // 定义点击左耳朵切换效果
            function prev(){
                c--;
                if(c<0){
                    c = nav.length-1;
                };
                $("#nav li").eq(c).addClass("active").siblings("li").removeClass("active");
                $("#zxw").animate({left:c*-800+"px"}, 500);
                $("#box").attr("class", "bg"+c);
            };
            // 定义点击右耳朵切换效果
            function next(){
                c++;
                if(c > nav.length-1){
                    c = 0;
                };
                $("#nav li").eq(c).addClass("active").siblings("li").removeClass("active");
                $("#zxw").animate({left:c*-800+"px"}, 500);
                $("#box").attr("class", "bg"+c);
            };

            // 定时器,每2秒执行一次
            var time = setInterval(ziDongQieHuan, 2000);

            // 鼠标移入#box元素中,停止定时器
            $("#slide").mouseenter(function(){
                clearInterval(time);
            });    

            // 鼠标移出#box元素后,开始定时器
            $("#slide").mouseleave(function(){
                //鼠标移出时,开始定时器,并将定时器赋值给time变量,而当鼠标再次移入时,则刚好删除上次的定时器,不会累加
                time = setInterval(ziDongQieHuan, 2000);
            });   

            // 定义小圆点点击事件
            $("#nav li").click(function(){
                // $(this):当前点击的对象
                dianJiQieHuan($(this));
            });

            // 定义左耳朵点击事件 
            $("#prev").click(function(){
                prev();
            });
            // 定义右耳朵点击事件 
            $("#next").click(function(){
                next();
            });
        });
    </script>

</head>
<body>
    <!-- 最外层盒子开始 -->
    <div id="box" class="bg0">
        <!-- 幻灯片盒子开始 -->
        <div id="slide">
            <!-- 幻灯片开始 -->
            <ul id="zxw">
                <li><a href="#">
                    <img src="https://www.51zxw.net/NewAn/UploadFiles/20200609/202006090520504133.jpg">
                    <span>0</span>
                </a></li>
                <li><a href="#">
                    <img src="https://www.51zxw.net/NewAn/UploadFiles/20200608/202006080410588630.jpg">
                    <span>1</span>
                </a></li>
                <li><a href="#">
                    <img src="https://www.51zxw.net/NewAn/UploadFiles/20200608/202006080408097382.jpg">
                    <span>2</span>
                </a></li>
                <li><a href="#">
                    <img src="https://www.51zxw.net/NewAn/UploadFiles/20200624/202006240832286533.jpg">
                    <span>3</span>
                </a></li>
                <li><a href="#">
                    <img src="https://www.51zxw.net/NewAn/UploadFiles/20200609/202006090520504133.jpg">
                    <span>4</span>
                </a></li>
            </ul>
            <!-- 幻灯片结束 -->

            <!-- 小圆点开始 -->
            <ul id="nav">
                <li class="active"></li>
                <li></li>
                <li></li>
                <li></li>
            </ul>
            <!-- 小圆点结束 -->

            <!-- 左右两侧耳朵开始 -->
            <div id="prev"><img src="./prev.png"></div>
            <div id="next"><img src="./next.png"></div>
            <!-- 左右两侧耳朵结束 -->

        </div>
        <!-- 幻灯片盒子结束 -->
    </div>
    <!-- 最外层盒子结束 -->
</body>
</html>

reset.css

*{margin: 0; padding: 0; box-sizing: border-box;}
body{font-size:16px; font-family:"微软雅黑"; color: #333;}
b{font-weight: normal;}
i{font-style: normal;}
a, a:hover, a:active{text-decoration: none;  color: #333;}
input,textarea,select{outline: none;}
img{border: none; vertical-align: middle;}
li{list-style-type: none;}
.fl{float: left;}
.fr{float: right;}
.cl{clear: both;}
.clearfix::after{
    content: "";
    display: table;
    clear: both;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章