千家信息网

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

发表于:2024-11-17 作者:千家信息网编辑
千家信息网最后更新 2024年11月17日,这篇文章将为大家详细讲解有关JS如何实现多重选项卡切换轮播图,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。轮播图简介:在一个网站的某一特定模块,通过电脑上鼠标点击或
千家信息网最后更新 2024年11月17日JS如何实现多重选项卡切换轮播图

这篇文章将为大家详细讲解有关JS如何实现多重选项卡切换轮播图,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

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

html布局部分:

scenery scenery scenery scenery scenery
animal animal animal animal
entertainment entertainment entertainment entertainment entertainment
风景
名车
娱乐

CSS样式部分:

/* 为了布局方便,容器里大多采用的flex */#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 += `
${i + 1}
`; } btDiv[xss_clean] = 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[xss_clean].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();//鼠标移出展示区自动轮播 });

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

关于"JS如何实现多重选项卡切换轮播图"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0