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与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
Mar 12 Javascript
网页自动刷新,不产生嗒嗒声的一个解决方法
Mar 27 Javascript
js innerHTML 的一些问题的解决方法
Jun 22 Javascript
VS2008中使用JavaScript调用WebServices
Dec 18 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
Oct 28 Javascript
原生js封装二级城市下拉列表的实现代码
Jun 16 Javascript
基于jQuery实现表格内容的筛选功能
Aug 21 Javascript
JS和JQuery实现雪花飘落效果
Nov 30 jQuery
vue组件中的样式属性scoped实例详解
Oct 30 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
Jan 03 Javascript
JQuery特殊效果和链式调用操作示例
May 13 jQuery
Vue3 响应式侦听与计算的实现
Nov 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音乐采集(部分代码)
2007/02/14 PHP
深入phpMyAdmin的安装与配置的详细步骤
2013/05/07 PHP
PHP实现上传多文件示例代码
2017/02/20 PHP
PHP中trait使用方法详细介绍
2017/05/21 PHP
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
JavaScript—window对象使用示例
2013/12/09 Javascript
JS 仿腾讯发表微博的效果代码
2013/12/25 Javascript
常用的JS验证和函数汇总
2014/12/23 Javascript
jQuery插件bxSlider实现响应式焦点图
2015/04/12 Javascript
理解AngularJs指令
2015/12/10 Javascript
基于javascript实现listbox左右移动
2016/01/29 Javascript
JS触发服务器控件的单击事件(详解)
2016/08/06 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
nodejs6下使用koa2框架实例
2017/05/18 NodeJs
JS实现显示当前日期的实例代码
2018/07/03 Javascript
Koa从零搭建到Api实现项目的搭建方法
2019/07/30 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
浅析Python装饰器以及装饰器模式
2018/05/28 Python
flask中过滤器的使用详解
2018/08/01 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
利用python numpy+matplotlib绘制股票k线图的方法
2019/06/26 Python
pyspark 随机森林的实现
2020/04/24 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
解决python运行效率不高的问题
2020/07/20 Python
python map比for循环快在哪
2020/09/21 Python
css3新单位vw、vh的使用教程
2018/03/23 HTML / CSS
不同浏览器创建XMLHttpRequest方法有什么不同
2014/11/17 面试题
计算机专业推荐信范文
2013/11/27 职场文书
《池塘边的叫声》教学反思
2014/04/12 职场文书
法定代表人授权委托书范文
2014/09/22 职场文书
医生见习报告范文
2014/11/03 职场文书
2014年第四季度入党积极分子思想汇报(十八届四中全会)
2014/11/03 职场文书
巾帼标兵事迹材料
2014/12/26 职场文书
财产分割协议书
2016/03/22 职场文书
springmvc直接不经过controller访问WEB-INF中的页面问题
2022/02/24 Java/Android