javascript 定时自动切换的选项卡Tab

为了详细讲解“javascript 定时自动切换的选项卡Tab”的完整攻略,我们先来了解一下什么是选项卡Tab。

什么是选项卡Tab

选项卡(Tabs)是一种常见的网站导航方式,能够让用户快速切换不同的内容。选项卡通常用于展示多个内容,每个选项卡对应内容不同,用户可以通过点击选项卡标签来快速切换内容。

实现自动切换的选项卡Tab

实现自动切换的选项卡有多种方式,其中比较常见的方式是使用JavaScript定时器实现自动切换。在JavaScript中,我们可以使用setInterval函数定时调用函数,从而达到定期执行任务的目的。下面是一个简单实现选项卡自动切换的demo:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>定时自动切换的选项卡Tab实现</title>
    <style>
      .tab {
        display: none;
      }
      .active {
        display: block;
      }
    </style>
  </head>
  <body>
    <ul>
      <li class="tab-btn active" data-target="tab1">选项卡1</li>
      <li class="tab-btn" data-target="tab2">选项卡2</li>
      <li class="tab-btn" data-target="tab3">选项卡3</li>
    </ul>
    <div class="tab-content">
      <div class="tab active" data-tab="tab1">选项卡1的内容</div>
      <div class="tab" data-tab="tab2">选项卡2的内容</div>
      <div class="tab" data-tab="tab3">选项卡3的内容</div>
    </div>    
    <script>
      var tabBtns = document.querySelectorAll('.tab-btn');
      var tabs = document.querySelectorAll('.tab');
      var index = 0;
      var intervalId = setInterval(function(){
        index = (index + 1) % tabBtns.length;
        setActiveTab(index)
      }, 2000);

      function setActiveTab(index) {
        for(var i = 0; i < tabs.length; i++) {
          if(i === index){
            tabs[i].classList.add('active');
            tabBtns[i].classList.add('active');
          } else {
            tabs[i].classList.remove('active');
            tabBtns[i].classList.remove('active');
          }
        }
      }

      for(var i = 0; i < tabBtns.length; i++) {
        tabBtns[i].addEventListener('click', function(evt){
          var targetId = evt.target.dataset.target;
          for(var i = 0; i < tabs.length; i++) {
            if(tabs[i].dataset.tab === targetId) {
              setActiveTab(i);
              clearInterval(intervalId);
              intervalId = setInterval(function(){
                index = (index + 1) % tabBtns.length;
                setActiveTab(index)
              }, 2000);             
              break;
            }
          }
        });
      }
    </script>
  </body>
</html>

以上是一个使用JavaScript实现自动切换的选项卡的完整示例。在这个示例中,我们使用了setInterval函数每隔2秒自动切换选项卡。同时,这个示例还允许用户手动点击切换选项卡,当用户手动切换时,定时器将被清除,等待用户操作完成后重新激活。

示范说明

为了更好地展示这个自动切换的选项卡示例的使用场景,我们可以在它基础上实现两个不同的需求:

例1:自动切换轮播图

下面是一个使用自动切换的选项卡实现自动切换轮播图的演示:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>自动切换轮播图</title>
    <style>
      .tab-img {
        display: none;
      }
      .active {
        display: block;
      }
      .tab-container {
        position: relative;
        width: 500px;
        height: 300px;
        margin: 0 auto;
      }
      .tab-nav {
        position: absolute;
        bottom: 0;
        left: 50%;
        transform: translateX(-50%);
        list-style: none;
        margin: 0;
        padding: 0;
      }
      .tab-nav li {
        display: inline-block;
        margin-right: 12px;
      }
      .tab-nav li:last-child {
        margin-right: 0;
      }
      .tab-nav a {
        display: block;
        width: 16px;
        height: 16px;
        background-color: #1abc9c;
        border-radius: 50%;
        text-indent: -9999px;
      }
      .tab-nav a.active {
        background-color: #3498db;
      }
      .tab-prev, .tab-next {
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
        font-size: 24px;
        z-index: 1;
        color: #fff;
        cursor: pointer;
        opacity: 0.8;
      }
      .tab-prev {
        left: 0;
      }
      .tab-next {
        right: 0;
      }
      .tab-run {
        position: absolute;
        width: 100%;
        height: 100%;
        z-index: 2;
        cursor: pointer;
      }
    </style>
  </head>
  <body>
    <div class="tab-container">
      <div class="tab-content">
        <img class="tab-img active" data-tab="tab1" src="http://placehold.it/500x300/2980b9/ffffff?text=tab1">
        <img class="tab-img" data-tab="tab2" src="http://placehold.it/500x300/2ecc71/ffffff?text=tab2">
        <img class="tab-img" data-tab="tab3" src="http://placehold.it/500x300/f1c40f/ffffff?text=tab3">
        <img class="tab-img" data-tab="tab4" src="http://placehold.it/500x300/e74c3c/ffffff?text=tab4">
      </div>   
      <ul class="tab-nav">
        <li><a class="active" href="#" data-target="tab1">1</a></li>
        <li><a href="#" data-target="tab2">2</a></li>
        <li><a href="#" data-target="tab3">3</a></li>
        <li><a href="#" data-target="tab4">4</a></li>
      </ul> 
      <div class="tab-prev">&#10094;</div>
      <div class="tab-next">&#10095;</div>
      <div class="tab-run"></div>
    </div>
    <script>
      var tabNav = document.querySelectorAll('.tab-nav a');
      var tabImgs = document.querySelectorAll('.tab-img');
      var tabBtnPrev = document.querySelector('.tab-prev');
      var tabBtnNext = document.querySelector('.tab-next');
      var tabRun = document.querySelector('.tab-run');
      var index = 0;
      var intervalId = setInterval(function(){
        index = (index + 1) % tabNav.length;
        setActiveTab(index)
      }, 3000);

      function setActiveTab(index) {
        for(var i = 0; i < tabImgs.length; i++) {
          if(i === index){
            tabImgs[i].classList.add('active');
            tabNav[i].classList.add('active');
          } else {
            tabImgs[i].classList.remove('active');
            tabNav[i].classList.remove('active');
          }
        }
      }

      for(var i = 0; i < tabNav.length; i++) {
        tabNav[i].addEventListener('click', function(evt){
          var targetId = evt.target.dataset.target;
          for(var i = 0; i < tabImgs.length; i++) {
            if(tabImgs[i].dataset.tab === targetId) {
              setActiveTab(i);
              clearInterval(intervalId);
              intervalId = setInterval(function(){
                index = (index + 1) % tabNav.length;
                setActiveTab(index)
              }, 3000);             
              break;
            }
          }
        });
      }

      tabBtnPrev.addEventListener('click', function(){
        index = (index - 1 + tabNav.length) % tabNav.length;
        setActiveTab(index);
      });

      tabBtnNext.addEventListener('click', function(){
        index = (index + 1) % tabNav.length;
        setActiveTab(index);
      });

      tabRun.addEventListener('mouseenter', function(){
        clearInterval(intervalId);
      });

      tabRun.addEventListener('mouseleave', function(){
        intervalId = setInterval(function(){
          index = (index + 1) % tabNav.length;
          setActiveTab(index)
        }, 3000);
      });
    </script>
  </body>
</html>

在这个来源于选项卡的自动切换演示中,我们以轮播图的形式展示了多个图片,自动循环播放,用户也可以手动进行上下翻页操作。

例2:自动切换新闻列表

下面是一个用自动切换的选项卡实现自动切换新闻列表的演示:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>自动切换新闻列表</title>
    <style>
        .active {
            color: #f00;
        }
        ul.news {
            list-style: none;
            padding: 0;
        }
        ul.news li {
            line-height: 30px;
        }
    </style>
  </head>
  <body>
    <ul class="news">
      <li class="active">新闻1</li>
      <li>新闻2</li>
      <li>新闻3</li>
      <li>新闻4</li>
      <li>新闻5</li>
    </ul>
    <script>
      var newsList = document.querySelector('.news');
      var newsItems = document.querySelectorAll('.news li');
      var index = 0;
      var intervalId = setInterval(function(){
        index = (index + 1) % newsItems.length;
        setActiveTab(index)
      }, 2000);

      function setActiveTab(index) {
        for(var i = 0; i < newsItems.length; i++) {
          if(i === index){
            newsItems[i].classList.add('active');
          } else {
            newsItems[i].classList.remove('active');
          }
        }
      }    
    </script>
  </body>
</html>

以上示例是一个简单的自动切换新闻列表的demo,每隔2秒自动切换到下一条新闻,用户也可以手动点击切换。在实际开发过程中,我们可以把这个简单的demo拓展成一个更加完整的新闻内容展示界面。

总之,基于选项卡的JavaScript自动切换效果可以应用于很多不同的场景,需要根据实际需求进行具体实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript 定时自动切换的选项卡Tab - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • NodeJs实现简单的爬虫功能案例分析

    Node.js是现在最为流行的后端JavaScript语言之一,也是一种基于事件驱动、非阻塞式I/O模型,轻量且高效的服务端开发框架。利用Node.js可以很方便地实现网络爬虫,下面我们来详细讲解怎样使用Node.js实现简单的爬虫功能。 1. 安装Node.js 在使用Node.js实现网络爬虫之前,我们需要安装Node.js环境。在Node.js的官网上…

    node js 2023年6月8日
    00
  • node.js入门学习之url模块

    Node.js入门学习之url模块 什么是url模块? url模块是Node.js标准库中的一个模块,主要用于处理和解析URL地址。 如何使用url模块? 要使用url模块,首先需要使用require方法引入: const url = require(‘url’); 然后就可以使用url模块提供的方法了。 url.parse方法 url.parse()方法用…

    node js 2023年6月8日
    00
  • JavaScript的ExtJS框架中数面板TreePanel的使用实例解析

    JavaScript的ExtJS框架中数面板TreePanel的使用实例解析 一、什么是TreePanel Tree Panel 是 ExtJS 中常用的一种 UI组件,它能够以树形结构的方式展示数据,并提供了一些便捷的交互方式来操作数据。我们经常在左侧菜单栏中看到这种组件。 二、TreePanel的基本配置 root:树的根节点。 store:数据仓库,存…

    node js 2023年6月8日
    00
  • JavaScript命令模式原理与用法实例详解

    JavaScript命令模式原理与用法实例详解 JavaScript命令模式(Command Pattern)是一种基于面向对象编程中的行为型模式。该模式将请求封装成一个对象,以便于对请求的参数化、延迟执行(如将一个请求排队或者记录请求日志)以及支持可撤销操作等功能。 命令模式原理 命令模式的核心是通过一个命令对象包装所有的请求细节,以达到解耦调用者与接收者…

    node js 2023年6月8日
    00
  • javascript object oriented 面向对象编程初步

    JavaScript 面向对象编程初步 前言 JavaScript 是一种面向对象的编程语言,面向对象编程(Object Oriented Programming)是一种编程范式,它将数据抽象为对象,对象之间相互关联,通过这种方式组织代码和数据,使得代码更加易读易懂、可维护性更高。 在 JavaScript 中,我们可以使用函数、对象和原型等方式来实现面向对…

    node js 2023年6月8日
    00
  • Node.js Express 框架 POST方法详解

    一、Node.js Express 框架 POST方法详解 在Node.js开发的web应用中,通常利用Express框架去搭建应用架构,POST方法则是Express框架中常用的一种请求方式。下面详细讲解Node.js Express框架POST方法的使用方式。 二、使用Node.js Express框架的POST方法 通过如下的代码,我们可以实现一个简单…

    node js 2023年6月8日
    00
  • Nodejs学习笔记之Global Objects全局对象

    下面详细讲解一下“Nodejs学习笔记之Global Objects全局对象”的攻略。 1. 什么是Global Objects? 在Node.js的全局作用域中,存在一些对象,这些对象可以在任何地方访问,被称作全局对象,其中包括: global对象:它是一个全局对象,可以在任何地方访问,如果一个变量在所有模块中都是全局变量,它就是global对象的属性之一…

    node js 2023年6月8日
    00
  • node.js中get和post接口教程

    Node.js中Get和Post接口教程 在Node.js中,我们可以使用HTTP模块来创建接口并处理HTTP请求和响应。本教程将演示如何使用Node.js创建Get和Post请求的接口。 Get请求 Get请求通常用于获取数据。在Node.js中,您可以使用req.query获取查询字符串中的参数,并使用res.send方法将数据作为响应发送回客户端。 以…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部