基於jQuery實現垂直輪播效果

效果圖

在這裏插入圖片描述

方法:使用定時器讓元素不斷替換及高度變化

<!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: 202px; height: 32px; 
            line-height: 30px;
            margin: 200px auto; 
            border: 1px solid #000;
            position: relative; 
            /* overflow: hidden; */
        }
        #box ul{
            width: 100%; 
            /* border: 1px solid red; */
            position: absolute; bottom: -30px; left: 0;
        }
        #box ul li{
            width: 100px; height: 30px; 
            line-height: 30px;
            padding-left: 10px;
        }
    </style>
    <script>
        // 滾動播放函數
        function gunDongBoFang(){      
            // 第一個元素高度變成0
            var first = $("#box ul li").first().height(0);

            // // 把第一個元素追加到父元素中
            $("#box ul").append(first);

            // 最後一個元素高度慢慢變成30px
            // $("#box ul li").last().css("height", "20px");
            $("#box ul li").last().animate({height:"30px"}, 1000); 
        };

        // 定時器,每2秒執行一次
        setInterval(gunDongBoFang, 2000);
    </script>
</head>
<body>
    <div id="box">
        <ul>
            <li>第1條公告...</li>
            <li>第2條公告...</li>
            <li>第3條公告...</li>
        </ul>
    </div>
</body>
</html>


優化:鼠標移入停止,移出開始

<!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: 202px; height: 32px; 
            line-height: 30px;
            margin: 200px auto; 
            border: 1px solid #000;
            position: relative; 
            overflow: hidden;
        }
        #box ul{
            width: 100%; 
            /* border: 1px solid red; */
            position: absolute; bottom: -30px; left: 0;
        }
        #box ul li{
            width: 100px; height: 30px; 
            line-height: 30px;
            padding-left: 10px;
        }
    </style>
    <script>
        $(function(){
            // 滾動播放函數
            function gunDongBoFang(){      
                // 第一個元素高度變成0
                // var first = $("#box ul li").first().height(0);

                // 把第一個元素追加到父元素中
                // $("#box ul").append(first);

                // 最後一個元素高度慢慢變成30px
                // $("#box ul li").last().animate({height:"30px"}, 1000); 

                // 簡化寫法
                $("#box ul").append($("#box ul li").first().height(0).animate({height:"30px"}, 1000));
            };

            // 定時器,每2秒執行一次
            var time = setInterval(gunDongBoFang, 2000);

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

            // 鼠標移出#box元素後,開始定時器
            $("#box").mouseleave(function(){
                // setInterval(gunDongBoFang, 1000); 錯誤寫法,鼠標移入移出定時器會累加
                
                //鼠標移出時,開始定時器,並將定時器賦值給time變量,而當鼠標再次移入時,則剛好刪除上次的定時器,不會累加
                time = setInterval(gunDongBoFang, 2000);
            });    
        });
    </script>
</head>
<body>
    <div id="box">
        <ul>
            <li>第1條公告...</li>
            <li>第2條公告...</li>
            <li>第3條公告...</li>
        </ul>
    </div>
</body>
</html>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章