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 操作符实例代码
Oct 24 Javascript
Javascript中产生固定结果的函数优化技巧
Jan 16 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
May 03 Javascript
ReactNative-JS 调用原生方法实例代码
Oct 08 Javascript
12 款 JS 代码测试必备工具(翻译)
Dec 13 Javascript
在js代码拼接dom对象到页面上的模板总结
Oct 21 Javascript
详解如何更好的使用module vuex
Mar 27 Javascript
Vue form表单动态添加组件实战案例
Sep 02 Javascript
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
Sep 25 Javascript
解决vue中el-tab-pane切换的问题
Jul 19 Javascript
微信小程序实现左滑删除效果
Nov 18 Javascript
详解template标签用法(含vue中的用法总结)
Jan 12 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
第1次亲密接触PHP5(2)
2006/10/09 PHP
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
2016/02/23 PHP
laravel 出现command not found问题的解决方案
2019/10/23 PHP
JavaScript 事件属性绑定带参数的函数
2009/03/13 Javascript
使用jQuery模板来展现json数据的代码
2010/10/22 Javascript
调用innerHTML之后onclick失效问题的解决方法
2014/01/28 Javascript
javascript使用switch case实现动态改变超级链接文字及地址
2014/12/16 Javascript
js+cookies实现悬浮购物车的方法
2015/05/25 Javascript
JavaScript实现对下拉列表值进行排序的方法
2015/07/15 Javascript
JS实现超精简的链接列表在固定区域内滚动效果代码
2015/11/04 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
2020/05/29 Javascript
JavaScript切换搜索引擎的导航网页搜索框实例代码
2017/06/11 Javascript
react-native DatePicker日期选择组件的实现代码
2017/09/12 Javascript
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
2019/11/01 Javascript
JavaScript This指向问题详解
2019/11/25 Javascript
jquery实现垂直手风琴导航栏
2020/02/18 jQuery
Vue组件间的通信pubsub-js实现步骤解析
2020/03/11 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
JS实现时间校验的代码
2020/05/25 Javascript
vue项目在线上服务器访问失败原因分析
2020/08/14 Javascript
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
python实现微信接口(itchat)详细介绍
2017/10/23 Python
Python实现的选择排序算法原理与用法实例分析
2017/11/22 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
Python定时发送天气预报邮件代码实例
2019/09/09 Python
Pytorch转tflite方式
2020/05/25 Python
Python大批量搜索引擎图像爬虫工具详解
2020/11/16 Python
ghd法国官方网站:英国最受欢迎的美发工具品牌
2019/04/18 全球购物
销售人员职业生涯规划范文
2014/03/01 职场文书
检举信的格式及范文
2014/04/04 职场文书
地球一小时倡议书
2014/04/15 职场文书
歌颂党的演讲稿
2014/09/10 职场文书
财务个人年度总结范文
2015/02/26 职场文书
企业党支部工作总结2015
2015/05/21 职场文书