JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)


Posted in Javascript onSeptember 24, 2015

本文实例讲述了JS实现滑动菜单效果代码。分享给大家供大家参考。具体如下:

这里实现一个特效将网页中的选项卡滑动门都集中到一个网页中来,有些同志曾经为同一个页面布置两个滑动门而烦恼,参考一下本例子,相信你会找到答案,而且有各种排列方式的选项卡,总有一款会满足你。

运行效果截图如下:

JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)

在线演示地址如下:

具体代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN" xml:lang="zh-CN">
<head>
<title>选项卡</title>
<style type="text/css">
<!--
* { margin:0; padding:0; font-size:12px; font-weight:normal; }
.jj { font-weight:bolder!important; }
.box { border-top-color:#c00!important; }
.pr { color:#060!important; }
#tab01 { position:relative; width:336px; height:88px; padding-top:15px; margin:50px; overflow:hidden; }
#tab01 h3 { position:relative; z-index:2; float:left; height:14px; padding:0 7px 0 8px; margin-left:-1px; border-left:solid 1px #ccc; border-right:solid 1px #fff; text-align:center; background:#fff; cursor:pointer; }
#tab01 h3.up { height:18px; padding:5px 7px 0 7px; margin:-6px 0 0 0; border:solid #ccc; border-width:1px 1px 0; color:#c00; }
#tab01 div { display:none; position:absolute; left:0; top:32px; z-index:1; width:324px; height:54px; padding:5px; border:solid 1px #ccc; color:#666; }
#tab01 div.up { display:block; }
#tab02 { position:relative; width:200px; margin:50px; border:solid #ccc; border-width:0 1px 1px; }
#tab02 h4 { height:18px; line-height:18px; border:solid #ccc; border-width:1px 0; margin-bottom:-1px; text-align:center; background:#f6f6f6; cursor:pointer; }
#tab02 h4.up { color:#c00; }
#tab02 ol { display:none; height:54px; padding:5px; color:#666; }
#tab02 ol.up { display:block; }
#tab03 { position:relative; width:100px; margin:50px; }
#tab03 h3 { position:relative; z-index:1; height:16px; padding-top:4px; margin-bottom:-1px; border:solid #ccc; border-width:1px 0 1px 1px; text-align:center; font-family:宋体; background:#eee; cursor:pointer; }
#tab03 h3.up { z-index:3; color:#c00; background:#fff; }
#tab03 div.tab { display:none; position:absolute; left:99px; top:0; z-index:2; width:300px; height:200px; padding:5px; border:solid 1px #ccc; color:#666; }
#tab03 div.tab.up { display:block; }
-->
</style>
</head>
<body>
<div id="tab01">
 <h3>首页</h3>
  <div class="jj"><p>嘿嘿,无视div原始class值。</p></div>
 <h3 class="pr">测试</h3>
  <div><p>继续无视h3原始class值。</p></div>
 <h3>无聊</h3>
  <div><p>h3没有值也可以~</p></div>
 <h3 class="box">傻蛋</h3>
  <div><p>div没有值一样可以~</p></div>
</div>
<div id="tab02">
 <h4>首页</h4>
  <ol class="pr"><li>嘿嘿,无视容器原始class值。</li></ol>
 <h4 class="box">测试</h4>
  <ol><li>继续无视h3原始class值。</li></ol>
 <h4>无聊</h4>
  <ol><li>h3没有值也可以~</li></ol>
 <h4 class="bb">傻蛋</h4>
  <ol><li>div没有值一样可以~</li></ol>
</div>
<div id="tab03">
 <h3>首页</h3>
  <div class="tab"><p>嘿嘿,无视h3原始class值。</p></div>
 <h3>测试</h3>
  <div class="tab wushi"><p>继续无视div原始class值。</p></div>
 <h3>无聊</h3>
  <div class="tab"><p>h3没有值也可以~</p></div>
 <h3 class="box">傻蛋</h3>
  <div class="tab tab123"><p>class值相似一样也可以~</p><div><p>指定class后,即时再多一个div也行。</p></div></div>
</div>
<script type="text/javascript">
<!--
function Pid(id,tag){
 if(!tag){
  return document.getElementById(id);
  }
 else{
  return document.getElementById(id).getElementsByTagName(tag);
  }
}
function tab(id,hx,box,iClass,s,pr){
 var hxs=Pid(id,hx);
 var boxs=Pid(id,box);
 if(!iClass){ // 如果不指定class,则:
  boxsClass=boxs; // 直接使用box作为容器
 }
 else{ // 如果指定class,则:
  var boxsClass = [];
  for(i=0;i<boxs.length;i++){
   if(boxs[i].className.match(/\btab\b/)){// 判断容器的class匹配
    boxsClass.push(boxs[i]);
   }
  }
 }
 if(!pr){ // 如果不指定预展开容器,则:
  go_to(0); // 默认展开序列
  yy();
 }
 else {
  go_to(pr);
  yy();
 }
 function yy(){
  for(var i=0;i<hxs.length;i++){
   hxs[i].temp=i;
   if(!s){// 如果不指定事件,则:
    s="onmouseover"; // 使用默认事件
    hxs[i][s]=function(){
     go_to(this.temp);
    }
   }
   else{
    hxs[i][s]=function(){
     go_to(this.temp);
    }
   }
  }
 }
 function go_to(pr){
  for(var i=0;i<hxs.length;i++){
   if(!hxs[i].tmpClass){
    hxs[i].tmpClass=hxs[i].className+=" ";
    boxsClass[i].tmpClass=boxsClass[i].className+=" ";
   }
   if(pr==i){
    hxs[i].className+=" up"; // 展开状态:标题
    boxsClass[i].className+=" up"; // 展开状态:容器
   }
   else {
    hxs[i].className=hxs[i].tmpClass;
    boxsClass[i].className=boxsClass[i].tmpClass;
   }
  }
 }
}
tab("tab01","h3","div","","onclick",2);
tab("tab02","h4","ol");
tab("tab03","h3","div","tab"); 
//-->
</script>
</body>
</html>

希望本文所述对大家的JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript脚本调试方法小结
Nov 24 Javascript
jquery 简短右键菜单 多浏览器兼容
Jan 01 Javascript
EXTJS FORM HIDDEN TEXTFIELD 赋值 使用value不好用的问题
Apr 16 Javascript
显示今天的日期js代码(阳历和农历)
Sep 30 Javascript
js+CSS实现模拟华丽的select控件下拉菜单效果
Sep 01 Javascript
微信小程序 UI与容器组件总结
Feb 21 Javascript
基于JavaScript定位当前的地理位置
Apr 11 Javascript
jQuery 实现双击编辑表格功能
Jun 19 jQuery
JS控制下拉列表左右选择实例代码
May 08 Javascript
Element Tooltip 文字提示的使用示例
Jul 26 Javascript
Element Badge标记的使用方法
Jul 27 Javascript
基于postman获取动态数据过程详解
Sep 08 Javascript
使用jquery+CSS3实现仿windows10开始菜单的下拉导航菜单特效
Sep 24 #Javascript
javascript同步服务器时间和同步倒计时小技巧
Sep 24 #Javascript
js中不同的height, top的区别对比
Sep 24 #Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
Sep 24 #Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
Sep 24 #Javascript
JS+CSS实现简易的滑动门效果代码
Sep 24 #Javascript
JS实现网站菜单拖拽移位效果的方法
Sep 24 #Javascript
You might like
php简单获取文件扩展名的方法
2015/03/24 PHP
JQuery之focus函数使用介绍
2013/08/20 Javascript
JS获取URL中参数值(QueryString)的4种方法分享
2014/04/12 Javascript
JS实现倒计时和文字滚动的效果实例
2014/10/29 Javascript
jQuery横向擦除焦点图特效代码分享
2015/09/06 Javascript
实例解析jQuery中proxy()函数的用法
2016/05/24 Javascript
jquery实现ajax加载超时提示的方法
2016/07/23 Javascript
关于JS变量和作用域详解
2016/07/28 Javascript
vue监听滚动事件实现滚动监听
2017/04/11 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
你可能不知道的JSON.stringify()详解
2017/08/17 Javascript
浅谈angular.js跨域post解决方案
2017/08/30 Javascript
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
手把手教你如何使用nodejs编写cli命令行
2018/11/05 NodeJs
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
JavaScript对象访问器Getter及Setter原理解析
2020/12/08 Javascript
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
django使用html模板减少代码代码解析
2017/12/12 Python
python 正确保留多位小数的实例
2018/07/16 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
python 制作网站小说下载器
2021/02/20 Python
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
办公室文秘自我评价
2013/09/21 职场文书
工程管理造价应届生求职信
2013/11/13 职场文书
党员的自我评价范文
2014/01/02 职场文书
单位消防安全制度
2014/01/12 职场文书
关于安全演讲稿
2014/05/09 职场文书
完整版商业计划书
2014/09/15 职场文书
中学生旷课检讨书2篇
2014/10/09 职场文书
感恩教师主题班会
2015/08/12 职场文书
python如何获取网络数据
2021/04/11 Python
Python如何把不同类型数据的json序列化
2021/04/30 Python