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;
    //运动函数
    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>```
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 课前谈话 师:小朋友们,前面的课文学得熟吗?我会放一些词组,它来自二年级刚刚学过的哪些课文,还要想一想,描绘的是哪...
    悠悠晃晃阅读 226评论 0 2
  • 页面结构使用了ViewPager2套Fragment形式其中一个fragment中用了TextClock控件 此时...
    精巧的中级星光阅读 269评论 0 0
  • 简直太喜欢王尔德了,每一句都像人生经典。今天学习了诗歌的题材写作。要有大量的意向,暗喻以及留白。 最佳的一句竟然是...
    多肉安安阅读 202评论 0 1
  • NAT REV | 肿瘤内给药和肿瘤组织靶向的免疫疗法 原创榴莲不酥图灵基因今天 收录于话题#前沿分子生物学机制 ...
    图灵基因阅读 192评论 0 1
  • (二)卷内文件排列:通常多按时间的先后次序及责任者、问题、文件的重要程度排列。正确顺序:问文在前,复文在后;正文在...
    肖申克的救赎阅读 356评论 0 0