2021-11-25

js 一頁顯示多張圖無縫輪播

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        li {
            list-style: none;
            float: left;
        }

        #box {
            width: 480px;
            height: 80px;
            border: 1px solid #000;
            overflow: hidden;
            position: relative;
            margin: 100px auto;
        }

        #prev,
        #next {
            display: block;
            width: 12px;
            height: 12px;
            border-radius: 50%;
            background: #666;
            color: #fff;
            font-size: 25px;
            text-align: center;
            line-height: 12px;
            position: absolute;
            top: 50%;
            margin-top: -6px;
            cursor: pointer;
        }

        #prev {
            left: 12px;
        }

        #next {
            right: 12px;
        }

        #banner-box {
            height: 100%;
            position: absolute;
            left: 0;
        }

        #banner-box li {
            height: 100%;
            width: 120px;
            background: #ddd;
            line-height: 80px;
            text-align: center;
        }
    </style>
</head>
<body>
    <div id="box">
        <ul id="banner-box">
          <!-- 6張 -->
          <li>banner06</li>
          <li>banner01</li>
          <li>banner02</li>
          <li>banner03</li>
          <li>banner04</li>
          <li>banner05</li>
          <li>banner06</li>
          <li>banner01</li>
          <li>banner02</li>
          <li>banner03</li>
          <!-- 5張 -->
          <!-- <li>banner05</li>
          <li>banner01</li>
          <li>banner02</li>
          <li>banner03</li>
          <li>banner04</li>
          <li>banner05</li>
          <li>banner01</li>
          <li>banner02</li>
          <li>banner03</li> -->
          <!-- 4張 -->
          <!-- <li>banner04</li>
          <li>banner01</li>
          <li>banner02</li>
          <li>banner03</li>
          <li>banner04</li>
          <li>banner01</li>
          <li>banner02</li>
          <li>banner03</li> -->
        </ul>
        <span id="prev"></span>
        <span id="next"></span>
      </div>
</body>
</html>
<script>
  window.onload = function() {
    // 初始化輪播
    let oBox = document.getElementById('box');
    let oUl = document.getElementById('banner-box');
    let oLi = oUl.children;
    let prev = document.getElementById('prev');
    let next = document.getElementById('next');
    let timer = null;
    let index = 1;
    oUl.style.width = oLi[0].offsetWidth * oLi.length +'px';
    oUl.style.left = '-120px';
    //向前滾動
    prev.onclick = function () {
      index--;
      move();
    }
    //向后滾動
    next.onclick = function () {
      index++;
      move();
    }
    //自動輪播
    function autoPlay () {
      timer = setInterval (() => {
        index++;
        move();
      }, 2000) 
    }
    autoPlay();
    oBox.onmouseover = function(){
        clearInterval(timer);
    }
    oBox.onmouseout = autoPlay;
    //運(yùn)動函數(shù)
    function move () {
      if (index === (oLi.length - 3)) {
        oUl.style.left = 0;
        index = 1;
      } else if (index === -1) {
        oUl.style.left = -(oLi.length - 4) * oLi[0].offsetWidth + 'px';
        index = oLi.length - 5;
      }
      animate(oUl, -index * oLi[0].offsetWidth);
    }
    function animate (obj, target){
      clearInterval(obj.timer);
      obj.timer = setInterval(function(){
          let speed = (target - parseInt(obj.style.left)) / 8;
          speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
          if (parseInt(obj.style.left) == target) {
            clearInterval(obj.timer);
          } else {
            obj.style.left = parseInt(obj.style.left) + speed + 'px';
          }
      },30);
    }
  }
</script>```
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 課前談話 師:小朋友們,前面的課文學(xué)得熟嗎?我會放一些詞組,它來自二年級剛剛學(xué)過的哪些課文,還要想一想,描繪的是哪...
    悠悠晃晃閱讀 281評論 0 2
  • 頁面結(jié)構(gòu)使用了ViewPager2套Fragment形式其中一個fragment中用了TextClock控件 此時...
    精巧的中級星光閱讀 294評論 0 0
  • 簡直太喜歡王爾德了,每一句都像人生經(jīng)典。今天學(xué)習(xí)了詩歌的題材寫作。要有大量的意向,暗喻以及留白。 最佳的一句竟然是...
    多肉安安閱讀 243評論 0 1
  • NAT REV | 腫瘤內(nèi)給藥和腫瘤組織靶向的免疫療法 原創(chuàng)榴蓮不酥圖靈基因今天 收錄于話題#前沿分子生物學(xué)機(jī)制 ...
    圖靈基因閱讀 237評論 0 1
  • (二)卷內(nèi)文件排列:通常多按時間的先后次序及責(zé)任者、問題、文件的重要程度排列。正確順序:問文在前,復(fù)文在后;正文在...
    肖申克的救贖閱讀 452評論 0 0

友情鏈接更多精彩內(nèi)容