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活用事件触发对象动作
Aug 10 Javascript
JQuery团队打造的javascript单元测试工具QUnit介绍
Feb 26 Javascript
根据一段代码浅谈Javascript闭包
Dec 14 Javascript
jquery中change()用法实例分析
Feb 06 Javascript
JS实现生成会变大变小的圆环实例
Aug 05 Javascript
Nginx上传文件全部缓存解决方案
Aug 17 Javascript
checkbox批量选中,获取选中项的值的简单实例
Jun 28 Javascript
HTML中使背景图片自适应浏览器大小实例详解
Apr 06 Javascript
Koa2 之文件上传下载的示例代码
Mar 29 Javascript
深入分析jQuery.one() 函数
Jun 03 jQuery
vue 图片裁剪上传组件的实现
Nov 12 Javascript
vue实现树状表格效果
Dec 29 Vue.js
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
pw的一个放后门的方法分析
2007/10/08 PHP
php中的观察者模式
2010/03/24 PHP
php数据库抽象层 PDO
2011/05/07 PHP
PHP生成sitemap.xml地图函数
2013/11/13 PHP
php删除数组中重复元素的方法
2015/12/22 PHP
PHP中list()函数用法实例简析
2016/01/08 PHP
PHP Header失效的原因分析及解决方法
2016/11/16 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
2017/02/10 PHP
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
Javascript图像处理—为矩阵添加常用方法
2012/12/27 Javascript
JS实现悬浮移动窗口(悬浮广告)的特效
2013/03/12 Javascript
javascript中Date()函数在各浏览器中的显示效果
2015/06/18 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
2015/06/25 Javascript
php利用curl获取远程图片实现方法
2015/10/26 Javascript
JS原型、原型链深入理解
2016/02/27 Javascript
Jquery技巧(必须掌握)
2016/03/16 Javascript
JavaScript 函数模式详解及示例
2016/09/07 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
2016/12/08 Javascript
JS实现的模仿QQ头像资料卡显示与隐藏效果
2017/04/07 Javascript
JS实现的汉字与Unicode码相互转化功能分析
2018/05/25 Javascript
vue element table 表格请求后台排序的方法
2018/09/28 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
Python实现分割文件及合并文件的方法
2015/07/10 Python
Python实现简易版的Web服务器(推荐)
2018/01/29 Python
python2.7 安装pip的方法步骤(管用)
2019/05/05 Python
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
HTML5中新标签和常用标签详解
2014/03/07 HTML / CSS
网络工程与软件技术毕业生自荐信
2013/09/24 职场文书
激励员工的口号
2014/06/16 职场文书
小学语文复习计划
2015/01/19 职场文书
小爸爸观后感
2015/06/15 职场文书
2019同学聚会主持词
2019/05/06 职场文书
导游词之介休绵山
2019/12/31 职场文书
TypeScript中条件类型精读与实践记录
2021/10/05 Javascript