tab栏切换原理

发布时间 - 2026-01-11 00:18:16    点击率:

本文是我学习tab栏切换时的笔记,步骤很详细。比较适用于JavaScript初学者

1.基础 - 排他思想

如图,点击任意一个按钮,当前按钮应该显示橘色,其他显示默认颜色灰色。

代码运行步骤:

利用for循环遍历5个按钮;

选中的按钮进行 onclick 事件时,首先删除所有按钮的类名,使其全部显示灰色(34行);

然后给当前点击的按钮添加指定类名,使其显示橘色(37行)。

示例代码:

<!DOCTYPE html>
<html>
 <head>
 <meta charset="utf-8">
 <title>tab栏切换效果</title>
 <style media="screen">
  *{
  margin: 0;
  padding: 0;
  border: 0 none;
  outline: none;
  }
  #btns{
  width: 300px;
  margin: 100px auto;
  }
  #btns button {
  width: 60px;
  height: 30px;
  float: left;
  border-right: 1px solid #ccc;
  }
  .color{
  background-color: #eb923f;
  }
 </style>
 <script type="text/javascript">
  window.onload = function () {
  var btns = document.getElementById("btns").getElementsByTagName("button");
  for (var i = 0; i < btns.length; i++) {
   btns[i].onclick = function () {
   for (var j = 0; j < btns.length; j++) {
    //把所有的button清空类名
    btns[j].className = "";
   }
   //点击的那个盒子添加指定类名
   this.className = "color";
   }
  }
  }
 </script>
 </head>
 <body>
 <div id="btns">
  <button class="color">按钮1</button>
  <button>按钮2</button>
  <button>按钮3</button>
  <button>按钮4</button>
  <button>按钮5</button>
 </div>
 </body>
</html>

2.tab栏切换

如图:在排他思想的基础上,五个按钮底下添加五个新盒子,并用一个大盒子将按钮和底下的盒子包裹。

底下的盒子全部隐藏,默认只显示第一个。

新增步骤:

为btns[i]添加自定义属性index,用来关联下面的大盒子(42行);

点击按钮后先让底下的盒子全部隐藏(54行);

然后给当前所点击按钮相关联的盒子添加指定属性(57行)。

示例代码:

<!DOCTYPE html>
<html>
 <head>
 <meta charset="utf-8">
 <title>tab栏切换效果</title>
 <style media="screen">
  *{
  margin: 0;
  padding: 0;
  border: 0 none;
  outline: none;
  }
  .baohan{
  width: 300px;
  margin: 100px auto;
  border: 1px solid #ccc;
  }
  #btns button {
  width: 60px;
  height: 30px;
  float: left;
  border-right: 1px solid #ccc;
  }
  #divs div {
  width: 300px;
  height: 100px;
  font-size: 60px;
  padding-top: 60px;
  background-color: #eb923f;
  text-align: center;
  display: none;
  }
  .color{
  background-color: #eb923f;
  }
 </style>
 <script type="text/javascript">
  window.onload = function () {
  var btns = document.getElementById("btns").getElementsByTagName("button");
  var divs = document.getElementById("divs").getElementsByTagName("div");
  for (var i = 0; i < btns.length; i++) {
   btns[i].index = i; //自定义属性,用于关联下面的大盒子
   btns[i].onclick = function () {

   for (var j = 0; j < btns.length; j++) {
    //把所有的button清空类名
    btns[j].className = "";
   }
   //点击的那个盒子添加指定类名
   this.className = "color";
   for (var i = 0; i < divs.length; i++) {
    //先让底下的div全部隐藏
    divs[i].style.display = "none";
   }
   //然后给当前所点击按钮相关联的盒子添加指定属性
   divs[this.index].style.display = "block";
   }
  }
  }
 </script>
 </head>
 <body>
 <div class="baohan">
  <div id="btns">
  <button class="color">按钮1</button>
  <button>按钮2</button>
  <button>按钮3</button>
  <button>按钮4</button>
  <button>按钮5</button>
  </div>
  <div id="divs">
  <div style="display:block;">1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
  </div>
 </div>
 </body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# tab切换原理  # tab栏切换  # tab切换的原理  # Vue.js组件tab实现选项卡切换  # Vue.js组件tabs实现选项卡切换效果  # 用AngularJS的指令实现tabs切换效果  # 原生js实现tab选项卡切换  # 一个精简的JS DIV层tab切换代码  # js(JavaScript)实现TAB标签切换效果的简单实例  # javascript实现tabs选项卡切换效果(自写原生js)  # 一个js的tab切换效果代码[代码分离]  # javascript实现tab切换的四种方法  # 基于jquery的tab切换 js原理  # 自定义  # 使其  # 相关联  # 如图  # 先让  # 清空  # 橘色  # 第一个  # 基础上  # 遍历  # 适用于  # 只显示  # media  # title  # utf  # head  # meta  # gt  # html  # charset 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  Android仿QQ列表左滑删除操作  手机网站制作与建设方案,手机网站如何建设?  Android实现代码画虚线边框背景效果  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  昵图网官网入口 昵图网素材平台官方入口  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  如何在云虚拟主机上快速搭建个人网站?  如何在IIS管理器中快速创建并配置网站?  ,网页ppt怎么弄成自己的ppt?  如何构建满足综合性能需求的优质建站方案?  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  如何用花生壳三步快速搭建专属网站?  三星网站视频制作教程下载,三星w23网页如何全屏?  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  简单实现Android验证码  javascript中的try catch异常捕获机制用法分析  JavaScript如何实现错误处理_try...catch如何捕获异常?  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  用yum安装MySQLdb模块的步骤方法  微信小程序 input输入框控件详解及实例(多种示例)  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  黑客入侵网站服务器的常见手法有哪些?  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  Laravel storage目录权限问题_Laravel文件写入权限设置  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  如何用狗爹虚拟主机快速搭建网站?  如何快速完成中国万网建站详细流程?  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  非常酷的网站设计制作软件,酷培ai教育官方网站?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  Laravel如何生成URL和重定向?(路由助手函数)  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  网站制作软件有哪些,制图软件有哪些?  制作电商网页,电商供应链怎么做?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  Python进程池调度策略_任务分发说明【指导】  Python制作简易注册登录系统