基於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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章