我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JS实现多重选项卡切换轮播图

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JS实现多重选项卡切换轮播图

轮播动画来提升页面的颜值和交互性能,下面我们将一起学习利用html , css和Javascript等前端开发基础知识来制作一个简单的轮播图。

轮播图简介:在一个网站的某一特定模块,通过电脑上鼠标点击或鼠标移入、手机上手指滑动后,可以分别展示不同的图片,这个模块就叫做轮播模块。

(做的不好的地方欢迎各位大佬批评指正,感觉有帮助的同学麻烦给颗星星哦~)

html布局部分:


<div id="box">
    <div class="scenery pic">
      <img class="show" class="lazy" data-src="imgs/s2.jpg" alt="scenery">
      <img class="lazy" data-src="imgs/s3.jpg" alt="scenery">
      <img class="lazy" data-src="imgs/s1.jpg" alt="scenery">
      <img class="lazy" data-src="imgs/s5.jpg" alt="scenery">
      <img class="lazy" data-src="imgs/s4.jpg" alt="scenery">
    </div>
    <div class="car pic">
      <img class="lazy" data-src="imgs/animal4.jpg" alt="animal">
      <img class="lazy" data-src="imgs/animal3.jpg" alt="animal">
      <img class="lazy" data-src="imgs/animal2.jpg" alt="animal">
      <img class="lazy" data-src="imgs/animal1.jpg" alt="animal">
    </div>
    <div class="entertainment pic">
      <img class="lazy" data-src="imgs/entertainment1.jpg" alt="entertainment">
      <img class="lazy" data-src="imgs/entertainment2.jpg" alt="entertainment">
      <img class="lazy" data-src="imgs/entertainment3.jpg" alt="entertainment">
      <img class="lazy" data-src="imgs/entertainment4.jpg" alt="entertainment">
      <img class="lazy" data-src="imgs/entertainment5.jpg" alt="entertainment">
    </div>
    <div class="leftbar">
      <div class="checked">风景</div>
      <div>名车</div>
      <div>娱乐</div>
    </div>
    <div class="bottombar">
 
    </div>
</div>

CSS样式部分:



#box {
      position: relative;
      width: 460px;
      height: 300px;
      margin: 40px auto;
      border: 1px solid rgb(109, 98, 98);
      user-select: none;
    }
    
    .leftbar {
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      position: absolute;
      top: -1px;
      left: -80px;
      width: 80px;
      height: 100%;
      text-align: center;
      font-size: 20px;
      cursor: pointer;
    }
 
    .leftbar div {
      flex: 1;
      line-height: 100px;
      background-color: cadetblue;
      letter-spacing: 5px;
    }
 
    .leftbar div:nth-child(2) {
      border-top: 1px solid #fff;
      border-bottom: 1px solid #fff;
    }
 
    
    .bottombar {
      display: flex;
      justify-content: space-between;
      position: absolute;
      bottom: -1px;
      right: -1px;
      z-index: 10;
      width: 200px;
      height: 30px;
      cursor: pointer;
    }
 
    .bottombar div {
      flex: 1;
      line-height: 30px;
      background-color: rgb(232, 233, 235, .5);
      text-align: center;
      font-weight: 700;
    }
 
    .bottombar div~div {
      border-left: 1px solid grey;
    }
 
    img {
      position: absolute;
      display: block;
      width: 460px;
      height: 300px;
    }
 
    .show {
      z-index: 5;
    }
 
    .leftbar .checked,
    .bottombar .checked {
      background-color: rgb(241, 5, 5);
    }

javascript逻辑实现部分:


var Box = document.querySelector('#box'), pic = Box.querySelectorAll('.pic'),
    Idx = 0, index = 0, timer = null,
    ltDiv = Box.querySelector('.leftbar'), btDiv = Box.querySelector('.bottombar'),
    Img = Box.querySelectorAll('img');
 
    function createBtBar(len) {//动态创建底部切换按钮
      var str = '';
      for (var i = 0; i < len; i++) {
        str += `<div>${i + 1}</div>`;
      }
      btDiv.innerHTML = str;
      btDiv.children[0].classList.add('checked');
    }
 
    function initialize() {//页面初始状态
      createBtBar(pic[0].children.length);
    }
    initialize();
 
    function clearZindex() {//重置所有图片的定位层级
      for (var k = 0; k < Img.length; k++) {
        Img[k].classList.remove('show');
      }
    }
 
    ltDiv.addEventListener('click', (e) => {//侧边栏项目切换
      if (e.target.tagName.toLowerCase() === 'div') {
        for (var j = 0; j < ltDiv.children.length; j++) {
          ltDiv.children[j].classList.remove('checked');
        }
 
        clearZindex();
        Idx = 0;
        index = getEleIdx(e.target);
        ltDiv.children[index].classList.add('checked');
        pic[index].children[0].classList.add('show');
        createBtBar(pic[index].children.length);
      }
    });
 
    btDiv.addEventListener('click', (e) => {//委托监听底部切换按钮
      if (e.target.tagName.toLowerCase() === 'div') {
        function changePic(callback) {
          btDiv.children[Idx].classList.remove('checked');
 
          clearZindex();
          callback && callback();
          btDiv.children[Idx].classList.add('checked');
          pic[index].children[Idx].classList.add('show');
        }
        changePic(function () {
          Idx = getEleIdx(e.target);
        });
      }
    });
 
    function getEleIdx(item) {//获取DOM元素下标
      var elements = item.parentNode.children;
      for (var i = 0, len = elements.length; i < len; i++) {
        if (item === elements[i]) {
          return i;
        }
      }
    }
 
    function loopShow() {//循环自动展示
      clearInterval(timer);
      timer = setInterval(function () {
        pic[index].children[Idx].classList.remove('show');
        btDiv.children[Idx].classList.remove('checked');
        Idx += 1;
        if (Idx < 0 || Idx > pic[index].children.length - 1) {
          Idx = 0;
        }
        pic[index].children[Idx].classList.add('show');
        btDiv.children[Idx].classList.add('checked');
      }, 1000);
    }
 
    loopShow();
 
    Box.addEventListener('mouseover', function () {
      clearInterval(timer);//鼠标移入展示区停止轮播
    });
    Box.addEventListener('mouseout', function () {
      loopShow();//鼠标移出展示区自动轮播
    });

具体实现的展示效果入下:

 (Tip: 各位注意自行准备图片放到自己的文件夹里哦~)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JS实现多重选项卡切换轮播图

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JS怎么实现选项卡切换效果

这篇文章主要为大家展示了“JS怎么实现选项卡切换效果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS怎么实现选项卡切换效果”这篇文章吧。相关代码:
2023-06-27

Android实现图片轮播切换实例代码

利用Android的ViewFlipper和AnimationUtils实现图片带有动画的轮播切换,其中当点击“上一张”图片时,切换到上一张图片;当点击“下一张”图片时,切换到下一张图片。其效果图如下:设置布局文件,其内容如下: activ
2022-06-06

vue.js怎么实现选项卡切换

本篇内容主要讲解“vue.js怎么实现选项卡切换”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue.js怎么实现选项卡切换”吧!一、实现原理我是用的点击事件进行更改data数据的值,v-if指
2023-06-29

Css怎么实现tab选项卡切换

这篇文章主要介绍了Css怎么实现tab选项卡切换,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Css实现tab选项卡切换的方法:利用target的特性,可以实现纯css的ta
2023-06-14

编程热搜

目录