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 强制类型转换函数
May 17 Javascript
Javascript 类、命名空间、代码组织代码
Jul 31 Javascript
jQuery构造函数init参数分析续
May 13 Javascript
js模仿php中strtotime()与date()函数实现方法
Aug 11 Javascript
基于javascript实现全国省市二级联动下拉选择菜单
Jan 28 Javascript
javascript实现仿百度图片的瀑布流加载效果
Apr 20 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
Jul 14 Javascript
JS控制静态页面传递参数并获取参数应用
Aug 10 Javascript
D3.js中强制异步文件读取同步的几种方法
Feb 06 Javascript
vue中的适配px2rem示例代码
Nov 19 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
Sep 10 Javascript
ant design vue datepicker日期选择器中文化操作
Oct 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
在线竞拍系统的PHP实现框架(一)
2006/10/09 PHP
高亮度显示php源代码
2006/10/09 PHP
PHP 压缩文件夹的类代码
2009/11/05 PHP
PHP实现自动识别Restful API的返回内容类型
2015/02/07 PHP
php文件管理基本功能简单操作
2017/01/16 PHP
Javascript hasOwnProperty 方法 &amp; in 关键字
2008/11/26 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
2010/05/26 Javascript
jQuery实现TAB选项卡切换特效简单演示
2016/03/04 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
Bootstrap栅格系统学习笔记
2016/11/25 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
vue中使用ueditor富文本编辑器
2018/02/08 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
vant中的toast层级改变操作
2020/11/04 Javascript
[36:41]完美世界DOTA2联赛循环赛FTD vs Magma第一场 10月30日
2020/10/31 DOTA
Python使用QQ邮箱发送Email的方法实例
2017/02/09 Python
python爬虫实现教程转换成 PDF 电子书
2017/02/19 Python
python 删除字符串中连续多个空格并保留一个的方法
2018/12/22 Python
Python3.5实现的罗马数字转换成整数功能示例
2019/02/25 Python
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
使用python绘制二维图形示例
2019/11/22 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
python语言是免费还是收费的?
2020/06/15 Python
HTML5实现页面切换激活的PageVisibility API使用初探
2016/05/13 HTML / CSS
HTML5拖拉上传文件的简单实例
2017/01/11 HTML / CSS
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
澳大利亚音乐商店:Bava’s Music City
2019/05/05 全球购物
设计师大码女装:11 Honoré
2020/05/03 全球购物
超市营业员岗位职责
2013/12/20 职场文书
党的群众路线教育实践活动公开承诺书
2014/03/28 职场文书
《美丽的丹顶鹤》教学反思
2014/04/22 职场文书
2015年健康教育工作总结
2015/04/10 职场文书
美丽人生观后感
2015/06/03 职场文书