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 相关文章推荐
快速排序 php与javascript的不同之处
Feb 22 Javascript
JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
Aug 14 Javascript
DOM操作一些常用的属性汇总
Mar 13 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
Oct 04 Javascript
JS 拦截全局ajax请求实例解析
Nov 29 Javascript
Vue仿手机qq的实例代码(demo)
Sep 08 Javascript
webpack实践之DLLPlugin 和 DLLReferencePlugin的使用教程
Jun 10 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
Sep 05 Javascript
Cordova(ionic)项目实现双击返回键退出应用
Sep 17 Javascript
js数据类型转换与流程控制操作实例分析
Dec 18 Javascript
JavaScript canvas绘制圆弧与圆形
Feb 18 Javascript
微信小程序多列表渲染数据开关互不影响的实现
Jun 05 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中::、-&amp;gt;、self、$this几种操作符的区别介绍
2013/04/24 PHP
php截取字符串函数分享
2015/02/02 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
javascript 利用Image对象实现的埋点(某处的点击数)统计
2012/12/28 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
jQuery实现的背景动态变化导航菜单效果
2015/08/24 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
纯js实现图片匀速淡入淡出效果
2017/08/22 Javascript
vue解决使用webpack打包后keep-alive不生效的方法
2018/09/01 Javascript
Postman参数化实现过程及原理解析
2020/08/13 Javascript
详解vue v-model
2020/08/31 Javascript
python 文件与目录操作
2008/12/24 Python
Python脚本处理空格的方法
2016/08/08 Python
Python简单实现Base64编码和解码的方法
2017/04/29 Python
python正则表达式re之compile函数解析
2017/10/25 Python
Python OpenCV处理图像之滤镜和图像运算
2018/07/10 Python
对pandas写入读取h5文件的方法详解
2018/12/28 Python
详解python调用cmd命令三种方法
2019/07/08 Python
利用Python实现kNN算法的代码
2019/08/16 Python
tensorflow的计算图总结
2020/01/12 Python
如何基于Python爬虫爬取美团酒店信息
2020/11/03 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
简述你对Statement,PreparedStatement,CallableStatement的理解
2013/03/25 面试题
关于青春的演讲稿三分钟
2014/08/22 职场文书
三峡人家导游词
2015/01/31 职场文书
承兑汇票延期证明
2015/06/23 职场文书
新教师教学工作总结
2015/08/14 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书
2016年“我们的节日·清明节”活动总结
2016/04/01 职场文书
oracle重置序列从0开始递增1
2022/02/28 Oracle
Flutter集成高德地图并添加自定义Maker的实践
2022/04/07 Java/Android
golang连接MySQl使用sqlx库
2022/04/14 Golang
Elasticsearch 配置详解
2022/04/19 Java/Android