京东轮播图的原生代码

早些时候分享了淘宝的轮播图,现在让我们一起来看看京东轮播图效果的实现吧,下面是代码:

<!DOCTYPE HTML>
<html>

<head>
  <meta charset="utf-8">
  <title></title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    li {
      list-style: none;
    }

    #div1 {
      width: 850px;
      height: 500px;
      margin: 50px auto;
      overflow: hidden;
      position: relative;
    }

    #div1 ul li {
      height: 500px;
      opacity: 0;
      position: absolute;
      left: 0;
      top: 0;
      z-index: 0;
      transition: opacity 1.5s;
    }

    #div1 ul li.ac {
      z-index: 5;
      opacity: 1;
    }

    #div1 ol {
      position: absolute;
      right: 10%;
      bottom: 10px;
      z-index: 6
    }

    #div1 ol li {
      width: 15px;
      height: 15px;
      background: #fff;
      margin-left: 5px;
      float: left;
      line-height: 15px;
      text-align: center;
      cursor: pointer;
      border-radius: 50%;
    }

    #div1 ol li.ac {
      background: deeppink;
      /* color: #fff; */
      opacity: 0.7;
    }

    #div1>a {
      text-decoration: none;
      position: absolute;
      top: 50%;
      margin-top: -20px;
      height: 40px;
      line-height: 32px;
      text-align: center;
      width: 40px;
      font-size: 40px;
      vertical-align: middle;
      color: #fff;
      background: rgba(0, 0, 0, 0.6);
      z-index: 10;
    }

    #goPrev {
      left: 0;
    }

    #goNext {
      right: 0;
    }

    img {
      width: 850px;
      height: 500px;
    }
  </style>
</head>

<body>
  <div id="div1">
    <ul>
      <li class="ac">
        <a>
          <img src="pic/001.jpg" />
        </a>
      </li>
      <li>
        <a>
          <img src="pic/002.jpg" />
        </a>
      </li>
      <li>
        <a>
          <img src="pic/003.jpg" />
        </a>
      </li>
      <li>
        <a>
          <img src="pic/004.jpg" />
        </a>
      </li>
      <li>
        <a>
          <img src="pic/005.jpg" />
        </a>
      </li>
    </ul>
    <ol>
      <li class="ac"></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
    </ol>
    <a href="javascript:;" id="goPrev">&laquo;</a>
    <a href="javascript:;" id="goNext">&raquo;</a>
  </div>
  <script>
    // 1 获取节点
    let div1Obj = document.getElementById('div1');
    let ulLisObj = div1Obj.firstElementChild.children;
    let olLisObj = document.querySelectorAll('ol li');

    let prevObj = document.getElementById('goPrev');
    let nextObj = document.getElementById('goNext');

    // 当前图片下标
    let index = 0;
    // 上一张图片下标
    let lastIndex = 0;
    let tiems = '';

    // 将伪数组转化为数组
    //console.log(olLisObj);

    Array.from(olLisObj).forEach((li, key) => {
      // console.log(val);
      li.onclick = function () {
        //console.log(key);
        // 将index值给lastIndex
        lastIndex = index;
        // 将当前按钮下标给
        index = key
        change();
      }

    });

    /****右边按钮,下一张的实现******/
    nextObj.onclick = function () {
      // 当前索引给lastIndex
      lastIndex = index;
      index++;
      // 判断是否超出最后一张
      if (index == ulLisObj.length) index = 0;
      change();
    }

    /*******左边按钮上一张的实现*****/
    prevObj.onclick = function () {
      lastIndex = index;
      index--;
      if (index < 0) index = ulLisObj.length - 1;
      change();
    }

    // 自动播放
    function autoPlay() {
      times = setInterval(() => {
        nextObj.onclick();
      }, 2000)
    }
    autoPlay();


    // 鼠标移入则停止
    div1Obj.onmouseover = () => {
      clearInterval(times)
    }
    div1Obj.onmouseout = () => {
      autoPlay();
    }
    // 当前图片的显示,上一张隐藏
    function change() {
      // 图片的隐藏显示
      ulLisObj[lastIndex].classList.remove('ac');
      // 显示当前图片
      ulLisObj[index].classList.add('ac');

      //   // 按钮的显示隐藏
      olLisObj[lastIndex].classList.remove('ac')
      olLisObj[index].classList.add('ac');
    }
  </script>
</body>

</html>

感谢观看~~

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值