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 相关文章推荐
带左右箭头图片轮播的JS代码
Dec 18 Javascript
js/jquery获取文本框输入焦点的方法
Mar 04 Javascript
php结合imgareaselect实现图片裁剪
Jul 05 Javascript
利用JS提交表单的几种方法和验证(必看篇)
Sep 17 Javascript
JavaScript 实现的checkbox经典实例分享
Oct 16 Javascript
微信小程序 参数传递详解
Oct 24 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
Feb 20 Javascript
图文讲解vue的v-if使用方法
Feb 11 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
Jul 19 Javascript
Vue axios 将传递的json数据转为form data的例子
Oct 29 Javascript
JS实现的定时器展示简单秒表、页面弹框及跳转操作完整示例
Jan 26 Javascript
原生js实现五子棋游戏
May 28 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
支持数组的ADDSLASHES的php函数
2010/02/16 PHP
php Notice: Undefined index 错误提示解决方法
2010/08/29 PHP
php实现的简单检验登陆类
2015/06/18 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
2016/05/20 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
一些常用弹出窗口/拖放/异步文件上传等实用代码
2013/01/06 Javascript
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
js获取控件位置以及不同浏览器中的差别介绍
2013/08/08 Javascript
javascript Event对象详解及使用示例
2013/11/22 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
2016/05/25 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
2019/03/15 Javascript
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
package.json中homepage属性的作用详解
2020/03/11 Javascript
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
基于python实现简单日历
2018/07/28 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
python八皇后问题的解决方法
2018/09/27 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
2019/09/28 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
中国海淘族值得信赖的海淘返利网站:55海淘
2017/01/16 全球购物
京东全球售:直邮香港,澳门,台湾,美国,澳大利亚等地区
2017/09/24 全球购物
俄罗斯三星品牌商店:GalaxyStore
2020/11/04 全球购物
网络技术支持面试题
2013/04/22 面试题
有模特经验的简历自我评价
2013/09/19 职场文书
播音主持女孩的自我评价分享
2013/11/20 职场文书
立志成才演讲稿
2014/09/04 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书
考试作弊检讨书范文
2015/01/27 职场文书
贷款收入证明范本
2015/06/12 职场文书
简历中的自我评价怎么写呢?
2019/04/30 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
前端使用svg图片改色实现示例
2022/07/23 HTML / CSS