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 相关文章推荐
符合W3C网页标准的iframe标签的使用方法
Jul 19 Javascript
javascript下arguments,caller,callee,call,apply示例及理解
Dec 24 Javascript
jquery-easyui关闭tab自动切换到前一个tab
Jul 29 Javascript
jquery创建一个ajax关键词数据搜索实现思路
Feb 26 Javascript
js验证IP及子网掩码的合法性有效性示例
Apr 30 Javascript
javascript实现客户端兼容各浏览器创建csv并下载的方法
Mar 23 Javascript
Angular Module声明和获取重载实例代码
Sep 14 Javascript
JS实现仿PS的调色板效果完整实例
Dec 21 Javascript
Vue通过URL传参如何控制全局console.log的开关详解
Dec 07 Javascript
利用Angular2的Observables实现交互控制的方法
Dec 27 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
May 16 Javascript
JavaScript 监听组合按键思路及代码实现
Jul 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网页游戏学习之Xnova(ogame)源码解读(十二)
2014/06/25 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
PHP一个简单的无需刷新爬虫
2019/01/05 PHP
Laravel框架实现抢红包功能示例
2019/10/31 PHP
实例:用 JavaScript 来操作字符串(一些字符串函数)
2007/02/15 Javascript
javascript 快速排序函数代码
2012/05/30 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
jquery实现的点击翻书效果代码
2015/11/04 Javascript
jQuery弹出div层过2秒自动消失
2016/11/29 Javascript
微信小程序 网络请求(post请求,get请求)
2017/01/17 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
JavaScript实现微信号随机切换代码
2018/03/09 Javascript
三种Webpack打包方式(小结)
2018/09/19 Javascript
微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)
2019/01/24 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
nuxt.js写项目时增加错误提示页面操作
2020/11/05 Javascript
python3调用R的示例代码
2018/02/23 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
python中判断文件结束符的具体方法
2020/08/04 Python
使用 CSS3 中@media 实现网页自适应的示例代码
2020/03/24 HTML / CSS
Html5新特性用canvas标签画多条直线附效果截图
2014/06/30 HTML / CSS
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
英国山地公路自行车商店:Tweeks Cycles
2018/03/16 全球购物
什么是java序列化,如何实现java序列化
2012/11/14 面试题
财务方面个人工作的自我评价
2013/12/28 职场文书
道路交通安全实施方案
2014/03/12 职场文书
班组建设经验交流材料
2014/05/12 职场文书
园林专业毕业生自荐信
2014/07/04 职场文书
党章培训心得体会
2014/09/04 职场文书
临时工聘用合同协议书
2014/10/29 职场文书
创业计划书之零食店(进口)
2019/09/24 职场文书
Python 数据可视化之Bokeh详解
2021/11/02 Python
FFmpeg视频处理入门教程(新手必看)
2022/01/22 杂记
java开发双人五子棋游戏
2022/05/06 Java/Android