帶你實現輪播切換(超詳細)

案例描述

在瀏覽器中每相隔一秒鐘切換一張圖片,圖片相對應的圖片解釋也跟着改變。

案例圖示

在這裏插入圖片描述

HTML

詳解請看註釋

<body>
    <div id="box">
        <ul class="left">
            <li class="current"><a href="#">圖片一</a></li>
            <li><a href="#">圖片二</a></li>
            <li><a href="#">圖片三</a></li>
            <li><a href="#">圖片四</a></li>
        </ul>
        <div class="center">
            <a href="#"><img src="./program1/images/1.jpg" width="200px" height="130px"></a>
            <a href="#"><img src="./program1/images/2.png" width="200px" height="130px"></a>
            <a href="#"><img src="./program1/images/4.jpg" width="200px" height="130px"></a>
            <a href="#"><img src="./program1/images/2.png" width="200px" height="130px"></a>
            <a href="#"><img src="./program1/images/1.jpg" width="200px" height="130px"></a>
            <a href="#"><img src="./program1/images/2.png" width="200px" height="130px"></a>
            <a href="#"><img src="./program1/images/4.jpg" width="200px" height="130px"></a>
            <a href="#"><img src="./program1/images/2.png" width="200px" height="130px"></a>
        </div>
        <ul class="right">
            <li><a href="#">圖片五</a></li>
            <li><a href="#">圖片六</a></li>
            <li><a href="#">圖片七</a></li>
            <li><a href="#">圖片八</a></li>
        </ul>
    </div> 
</body>

CSS

詳解請看註釋

<style>
    *{
        margin: 0;
        padding: 0;
        box-sizing: border-box;
        list-style: none;
    }
    a {
        text-decoration: none;
        color: #000;
    }
    #box {
        width: 323px;
        height: 130px;
        border: 1px solid #ccc;
        margin: 100px auto;		/*水平居中*/
    }
    .left, .right {
        width: 60px;
        height: 130px;
        float: left;
    }
    .center {
        width: 200px;
        height:130px;
        float: left;
        border-left: 1px solid #ccc;
        border-right: 1px solid #ccc;
        /* 隱藏 */
        overflow: hidden;       
    }
    .center img {
        padding: 10px;
    }
    li {
        line-height: 20px;
        text-align: center;
        border-top: 1px solid #ccc;
        padding: 6px;
    }
    /* 去掉左右第一個孩子的上邊框 */
    .left li:first-child, .right li:first-child {
        border-top: none;
    }
    
    /* 改變選中圖片li的背景顏色 */
    .current  {
        background-color: #ccc;
    }
</style>

JS核心代碼

這裏需要注意:
(1)索引 index。沒當輪播到最後一張圖片後,又要重新輪播到第一張圖片,所以在這裏使用index %= 7
(2)使用排他思想,首先將所有的 li 標籤className置爲空, img 標籤的style.display 置爲 none,再處理選中事項

<script>
    window.onload = function (){
        //獲取標籤
        var allLi = document.getElementsByTagName('li');
        var allImg = document.getElementsByTagName('img');
        var current = document.getElementsByClassName('current');

        //索引
        var index = 0;

        //定時器
        setInterval(function(){
            //索引++
            index++;
            index %= 8;     //index  0-7

            //排他
            for (let i = 0; i < allLi.length; i++) {
               allLi[i].className = '';
               allImg[i].style.display = 'none';    
            }

            //處理選中
            allLi[index].className = 'current';
            allImg[index].style.display = 'block';
        },1000);

    };

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