App下載

JS如何實現(xiàn)輪播圖效果

猿友 2021-03-15 10:40:42 瀏覽數(shù) (11944)
反饋

我們在瀏覽網(wǎng)頁時,會發(fā)現(xiàn)有一個功能經(jīng)常涉及到,那就是圖片輪播功能。那么JS如何實現(xiàn)輪播圖效果呢?這篇文章告訴你。

讓我們先來看看輪播圖效果是什么樣的。比如 W3Cschool官網(wǎng)中就可以看到輪播圖的應(yīng)用。

01

以下是具體的代碼:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>w3cschool-編程獅</title>
<!-- css樣式 -->
    <style type="text/css">
        /*清除邊距*/
        div,ul,li{
            margin: 0;
            padding: 0;
        }
        /*首先準(zhǔn)備一個放圖片的容器*/
        .container{
            width: 500px;
            height: 280px;
            position: relative;
            top: 100px;
            left: 30%;
            /*border: 1px solid #ccc;*/
        }
        /*圖片樣式*/
        .container img{
            position: absolute;        /*把所有圖片放在同一個位置*/
            width: 100%;
            transition-duration: 0.5s;    /*設(shè)置過渡時間*/
            opacity: 0;                /*把所有圖片變透明*/
        }
        /*圖片顯示開關(guān)*/
        .container img.on{
            opacity: 1;                /*用于顯示圖片*/
        }
        /*左右按鈕 按鈕用圖片更好點,這里為了簡便就用大于小于號*/
        .left, .right{
            position: absolute;
            top: 30%;
            width: 60px;
            height: 100px;
            line-height: 100px;
            background-color: #666;
            opacity: 0.5;
            text-align: center;
            font-size: 60px;
            color: #ccc;
            display: none;    /*先隱藏按鈕*/
            cursor: pointer;    /*設(shè)置鼠標(biāo)懸停時的樣式*/
        }
        .left{
            left: 0;
        }
        .right{
            right: 0;
        }
        .container:hover .left, .container:hover .right{
            display: block;            /*鼠標(biāo)懸停才容器范圍內(nèi)時顯示按鈕*/
        }
        .left:hover, .right:hover{
            color: #fff;
        }
        /*焦點*/
        .container ul{
            position: absolute;
            bottom: 0;
            max-width: 500px;
            padding: 5px 200px;
        }
        .container ul li{
            list-style: none;
            float: left;
            background-color: #ccc;
            width: 10px;
            height: 10px;
            border-radius: 50%;
            margin-left: 10px;
            cursor: pointer;
        }
        .container ul li.active{
            background-color: #282923;        /*焦點激活時的樣式*/
        }
    </style>
</head>
<body>
    <div class="container">
        <!-- 先把第一張圖片顯示出來 -->
        <img class="on" src="image/42.png" />
        <img src="image/43.png" />
        <img src="image/44.png" />
        <img src="image/45.png" />
        <!-- 左右切換 -->
        <div class="left"><</div>
        <div class="right">></div>
        <!-- 焦點 -->
        <ul>
            <li class="active"></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div>
<!-- js部分 -->
    <script type="text/javascript">
        //1、找到container下的所有img標(biāo)簽,li標(biāo)簽,左右按鈕
        var aImgs = document.querySelectorAll('.container img');
        var aLis = document.querySelectorAll('.container li');
        var btnLeft = document.querySelector('.container .left');
        var btnRight = document.querySelector('.container .right');
        //點擊事件
        //點擊按鈕圖片切換
        var index = 0;        //當(dāng)前圖片下標(biāo)
        var lastIndex = 0;
        btnRight.onclick = function(){
            //記錄上一張圖片的下標(biāo)
            lastIndex = index;
            //清除上一張圖片的樣式
            aImgs[lastIndex].className = '';
            aLis[lastIndex].className = '';
            index++;
            index %= aImgs.length;    //實現(xiàn)周期性變化
            //設(shè)置當(dāng)前圖片的樣式
            aImgs[index].className = 'on';
            aLis[index].className = 'active';
        }
        //左邊按鈕類似
        btnLeft.onclick = function(){
            //記錄上一張圖片的下標(biāo)
            lastIndex = index;
            //清除上一張圖片的樣式
            aImgs[lastIndex].className = '';
            aLis[lastIndex].className = '';
            index--;
            if (index < 0) {
                index = aImgs.length - 1;
            }
            //設(shè)置當(dāng)前圖片的樣式
            aImgs[index].className = 'on';
            aLis[index].className = 'active';
        }
    </script>
</body>
</html>

實現(xiàn)效果:

01

圖片素材:

42

43

44

45

以上就是JS實現(xiàn)輪播圖效果的全部教程。同學(xué)們可以動手進行練習(xí),以鞏固該知識點。

更多JS效果:


0 人點贊