[Web] 通用輪播圖代碼示例


首先是准備好的幾張圖片, 它們的路徑是: "img/1.jpg", "img/2.jpg", "img/3.jpg", "img/4.jpg", "img/5.jpg", "img/6.jpg"

代碼

最基本的 HTML 代碼:

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>Test</title>
  <link rel="stylesheet" href="css/index.css" />   <!--引入樣式表-->
  <script src="js/index.js"></script>              <!--引入JS腳本, 腳本用來切換圖-->
</head>

<body>
  <div id="test" class="slider">
    <img id="img1" src="img/1.jpg" class="current">
    <img id="img2" src="img/2.jpg">
    <img id="img3" src="img/3.jpg">
  </div>
  <button onclick="setCurrent(0)">1</button>      <!--在這里, onClick調用的是用於設置當前圖片的方法, 傳入參數為圖片節點的索引-->
  <button onclick="setCurrent(1)">2</button>
  <button onclick="setCurrent(2)">3</button>
  <button onclick="setCurrent(3)">4</button>
  <button onclick="setCurrent(4)">5</button>
  <button onclick="setCurrent(5)">6</button>
  <script>
    setInterval(moveNext, 5000);      // 每隔5s, 切換到下一張圖片
  </script>
</body>

</html>

引入的樣式表:

.slider {                 /* 指定輪播圖容器尺寸, 相對定位, 隱藏溢出內容 */
    width: 750px;
    height: 450px;
    position: relative;
    overflow: hidden;
}
.slider img {             /* 指定每一個圖片的尺寸, 過渡時間, 絕對定位 */
    width: 100%;
    height: 100%;
    transition: all 0.5s;
    position: absolute;
}
.slider img {                           /* 指定所有圖片水平位移-100% */
    transform: translateX(-100%);
}
.slider img.current {                   /* 指定帶有current類的圖片不進行水平移動 */
    transform: translateX(0);
}
.slider img.current~img{                /* 指定位於帶有current類的圖片之后的所有圖片水平位移為100% */
    transform: translateX(100%);
}
.slider img.current,                    /* 指定帶有current或last類的圖片置頂 */
.slider img.last{
    z-index: 999;
}

引入的JavaScript:

function getImages() {
    return document.getElementById("test").querySelectorAll("img");       // 搜找該頁面下輪播圖容器中的所有img
}
function getCurrent() {
    return document.getElementById("test").querySelector("img.current");  // 搜找該頁面下輪播圖容器中當前展示的img
}
function setCurrent(index) {
    var imgs = getImages();
    var cur = getCurrent();
    imgs.forEach(v => v.className = "");   // 清空所有圖片的類名
    cur.className = "last";                // 設置當前展示的圖片的類名為 "last", 意為: "上一次展示的圖片"
    imgs[index].className = "current";     // 設置要設置的圖片的類名為 "current"
}
function moveNext() {          // 移動展示圖片到下一個
    var imgs = getImages();
    var curIndex;
    for (curIndex = 0; curIndex < imgs.length; curIndex++) {
        if (imgs[curIndex].className == "current") {
            break;
        }
    }
    if (curIndex + 1 < imgs.length) {
        setCurrent(curIndex + 1);
    } else {
        setCurrent(0);
    }
}

原理

圖片集為一個序列, 當前展示的圖片在中間, 展示圖片之前的圖片則是在左邊, 而之后的圖片則是在右邊.

任意設置一個圖片為當前展示的圖片(即設置類名為current), 那么該圖片將移動到中間. 而其它的圖片, 自然也會移動到它兩邊.

由於滑動時, 需要顯示將要展示的圖片, 以及將要隱藏的圖片, 所以這兩張圖片需要置頂, 否則, 進行多張圖片的切換時, 將由於默認層級關系而導致異常, 故設置 .current 與 .last 的 z-index 為 999.

效果

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM