js实现tab切换效果实例


Posted in Javascript onSeptember 16, 2015

直接先来个真相吧:

js实现tab切换效果实例 

【HTML代码】

<div id="menu">
<!--tag标题-->
  <ul id="nav">
    <li><a href="#" class="selected">tab1</a></li>
    <li><a href="#" class="">tab2</a></li>
    <li><a href="#" class="">tab3</a></li>
    <div style="clear:both"></div>
  </ul>
<!--二级菜单-->
  <div id="menu_con">
    <div class="tag" style="display:block">
      这是TAB切换效果区域1
     </div> 
    <div class="tag" style="display:none">
      这是TAB切换效果区域2  
     </div> 
    <div class="tag" style="display:none">
      这是TAB切换效果区域3
    </div> 
</div>
</div>

【js】

/**
 * tabs
 * @author  橡树小屋
 */
var tabs=function(){
  function tag(name,elem){
    return (elem||document).getElementsByTagName(name);
  }
  //获得相应ID的元素
  function id(name){
    return document.getElementById(name);
  }
  function first(elem){
    elem=elem.firstChild;
    return elem&&elem.nodeType==1? elem:next(elem);
  }
  function next(elem){
    do{
      elem=elem.nextSibling; 
    }while(
      elem&&elem.nodeType!=1 
    )
    return elem;
  }
  return {
    set:function(elemId,tabId){
      var elem=tag("li",id(elemId));
      var tabs=tag("div",id(tabId));
      var listNum=elem.length;
      var tabNum=tabs.length;
      for(var i=0;i<listNum;i++){
          elem[i].onclick=(function(i){
            return function(){
              for(var j=0;j<tabNum;j++){
                if(i==j){
                  tabs[j].style.display="block";
                  //alert(elem[j].firstChild);
                  elem[j].firstChild.className="selected";
                }
                else{
                  tabs[j].style.display="none";
                  elem[j].firstChild.className="";
                }
              }
            }
          })(i)
      }
    }
  }
}();
window.onload=function(){
  tabs.set("nav","menu_con");
}

【CSS】

body{ background:#FFF;}
a{color:#585858}
#menu{width:360px;}
/*-------------------nav样式----------------------*/
#menu #nav {display:block;width:100%;padding:0;margin:0;list-style:none;
 background:url(../images/bg.gif)}
#menu #nav li {float:left;width:120px;}
#menu #nav li a {display:block;line-height:27px;text-decoration:none;padding:0 0 0 5px; text-align:center}
 
/*-------------------列表标题样式----------------------*/
#menu_con{ width:358px; height:135px;border:1px solid #BF9660; border-top:none}
.selected{background:url(../images/tag_bg.gif);}
.clear{ clear:both}

调用方法:

tabs.set("nav","menu_con");

代码下载 点击这里

这个实例只是简单实现了点击切换的效果,还有许多功能可以添加,大家一起动手实践一下吧。

Javascript 相关文章推荐
初学JavaScript_03(ExtJs Grid的简单使用)
Oct 02 Javascript
基于jQuery的合并表格中相同文本的相邻单元格的代码
Apr 06 Javascript
jquery获得下拉框值的代码
Aug 13 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
Mar 13 Javascript
php读取sqlite数据库入门实例代码
Jun 25 Javascript
JsRender for object语法简介
Oct 31 Javascript
javascript实现时间格式输出FormatDate函数
Jan 13 Javascript
老生常谈javascript中逻辑运算符&amp;&amp;和||的返回值问题
Apr 13 Javascript
详解使用jest对vue项目进行单元测试
Sep 07 Javascript
详解VUE前端按钮权限控制
Apr 26 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
Oct 29 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
Jan 26 Vue.js
JS实现自动固定顶部的悬浮菜单栏效果
Sep 16 #Javascript
jQuery图片轮播滚动切换代码分享
Apr 20 #Javascript
JS实现光滑展开合拢的菜单效果代码
Sep 16 #Javascript
jQuery实现两款有动画功能的导航菜单代码
Sep 16 #Javascript
javascript中的previousSibling和nextSibling的正确用法
Sep 16 #Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
Sep 16 #Javascript
JS+CSS实现的经典tab选项卡效果代码
Sep 16 #Javascript
You might like
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
2006/11/18 PHP
PHP中使用gettext来支持多语言的方法
2011/05/02 PHP
CentOS安装php v8js教程
2015/02/26 PHP
推荐20家国外的脚本下载网站
2011/04/28 Javascript
Javascript setInterval的两种调用方法(实例讲解)
2013/11/29 Javascript
再谈javascript原型继承
2014/11/10 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
JavaScript注入漏洞的原理及防范(详解)
2016/12/04 Javascript
详解vue2.0组件通信各种情况总结与实例分析
2017/03/22 Javascript
vue2实现数据请求显示loading图
2017/11/28 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
小程序实现列表展开收起效果
2020/07/29 Javascript
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
[42:04]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第一局
2016/03/03 DOTA
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
Python实现Tab自动补全和历史命令管理的方法
2015/03/12 Python
Python使用gensim计算文档相似性
2016/04/10 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
2017/11/14 Python
小米5s微信跳一跳小程序python源码
2018/01/08 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
Python利用requests模块下载图片实例代码
2019/08/12 Python
招商业务员岗位职责
2013/12/16 职场文书
高中毕业自我鉴定
2013/12/22 职场文书
绩效工资实施方案
2014/03/15 职场文书
大四毕业生自荐书
2014/07/05 职场文书
教师听课评语大全
2014/12/31 职场文书
财务会计岗位职责
2015/02/03 职场文书
毕业生个人总结
2015/02/28 职场文书
保留意见审计报告
2015/06/05 职场文书
市级三好生竞选稿
2015/11/21 职场文书
保险公司2016开门红口号集锦
2015/12/24 职场文书
2016年“我们的节日·中秋节”活动总结
2016/04/05 职场文书
如何用RabbitMQ和Swoole实现一个异步任务系统
2021/05/29 PHP