tab栏切换原理


Posted in Javascript onMarch 22, 2017

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

1.基础 - 排他思想

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

代码运行步骤:

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

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

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

tab栏切换原理

示例代码:

<!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栏切换

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

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

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>

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

Javascript 相关文章推荐
JavaScript的单例模式 (singleton in Javascript)
Jun 11 Javascript
当jQuery遭遇CoffeeScript的时候 使用分享
Sep 17 Javascript
Node.js实现在目录中查找某个字符串及所在文件
Sep 03 Javascript
jQuery.trim() 函数及trim()用法详解
Oct 26 Javascript
Ionic默认的Tabs模板使用实例
Aug 29 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
Dec 13 Javascript
jQuery实现获取隐藏div高度的方法示例
Feb 09 Javascript
jQuery中each方法的使用详解
Mar 18 jQuery
jQuery中可见性过滤器简单用法示例
Mar 31 jQuery
微信小程序如何引用外部js,外部样式,公共页面模板
Jul 23 Javascript
微信小程序全局变量的设置、使用、修改过程解析
Sep 24 Javascript
js中Function引用类型常见有用的方法和属性详解
Dec 11 Javascript
js中的DOM模拟购物车功能
Mar 22 #Javascript
js+canvas实现动态吃豆人效果
Mar 22 #Javascript
JavaScript实现星星等级评价功能
Mar 22 #Javascript
discuz表情的JS提取方法分析
Mar 22 #Javascript
详解vue2.0组件通信各种情况总结与实例分析
Mar 22 #Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
Mar 22 #Javascript
Vue计算属性的学习笔记
Mar 22 #Javascript
You might like
php 什么是PEAR?
2009/03/19 PHP
php中如何防止表单的重复提交
2013/08/02 PHP
destoon实现商铺管理主页设置增加新菜单的方法
2014/06/26 PHP
PHP获取时间排除周六、周日的两个方法
2014/06/30 PHP
PHP中iconv函数转码时截断字符问题的解决方法
2015/01/21 PHP
PHP实现数组的笛卡尔积运算示例
2017/12/15 PHP
DB.ASP 用Javascript写ASP很灵活很好用很easy
2011/07/31 Javascript
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
2017/10/14 jQuery
Vue.js划分组件的方法
2017/10/29 Javascript
react-native fetch的具体使用方法
2017/11/01 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
微信小程序用户信息encryptedData详解
2018/08/24 Javascript
vue-rx的初步使用教程
2018/09/21 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
2018/10/24 Javascript
Layui Form 自定义验证的实例代码
2019/09/14 Javascript
vue父组件给子组件的组件传值provide inject的方法
2019/10/23 Javascript
python生成器generator用法实例分析
2015/06/04 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
Python实现字符串格式化输出的方法详解
2017/09/20 Python
在Python中使用Neo4j的方法
2019/03/14 Python
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
户外用品商店创业计划书
2014/01/29 职场文书
绘画专业自荐信范文
2014/02/23 职场文书
就业推荐表自我鉴定
2014/03/21 职场文书
公开服务承诺制度
2014/03/26 职场文书
经理任命书模板
2014/06/06 职场文书
工伤事故证明
2014/10/20 职场文书
2015迎新晚会开场白
2015/05/29 职场文书
班级联欢会主持词
2015/07/03 职场文书
Python源码解析之List
2021/05/21 Python
Python 中的 copy()和deepcopy()
2021/11/07 Python