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 String 对象
Apr 25 Javascript
jQuery最佳实践完整篇
Aug 20 Javascript
JS Map 和 List 的简单实现代码
Jul 08 Javascript
Jquery 模板数据绑定插件的使用方法详解
Jul 08 Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
Jun 06 Javascript
jQuery中使用each处理json数据
Apr 23 Javascript
Vue.js每天必学之构造器与生命周期
Sep 05 Javascript
jQuery实现的模拟弹出窗口功能示例
Nov 24 Javascript
详解使用JS如何制作简单的ASCII图与单极图
Mar 31 Javascript
JavaScript实现各种排序的代码详解
Aug 28 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
Jan 30 Javascript
layDate插件设置开始和结束时间
Nov 15 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
LotusPhp笔记之:基于ObjectUtil组件的使用分析
2013/05/06 PHP
使用淘宝IP库获取用户ip地理位置
2013/10/27 PHP
PHP之十六个魔术方法详细介绍
2016/11/01 PHP
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
2009/02/18 Javascript
超简单的jquery的AJAX用法
2010/05/10 Javascript
IE浏览器不支持getElementsByClassName的解决方法
2014/08/27 Javascript
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
js对象基础实例分析
2015/01/13 Javascript
简单实现轮播图效果的实例
2016/07/15 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
2016/12/19 Javascript
JavaScript创建对象的七种方式(推荐)
2017/06/26 Javascript
es6中的解构赋值、扩展运算符和rest参数使用详解
2017/09/28 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
2018/09/01 Javascript
element-ui中el-upload多文件一次性上传的实现
2020/12/02 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
2020/12/10 Vue.js
零基础写python爬虫之HTTP异常处理
2014/11/05 Python
使用sklearn之LabelEncoder将Label标准化的方法
2018/07/11 Python
python zip()函数使用方法解析
2019/10/31 Python
python3 实现函数写文件路径的正确方法
2019/11/27 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
多重CSS背景动画实现方法示例
2014/04/04 HTML / CSS
HTML5 Canvas自定义圆角矩形与虚线示例代码
2013/08/02 HTML / CSS
如何保障Web服务器安全
2014/05/05 面试题
体育教育毕业生自荐信
2013/11/21 职场文书
大学自荐信
2013/12/12 职场文书
开展党的群众路线教育实践活动方案
2014/02/05 职场文书
《守株待兔》教学反思
2014/03/01 职场文书
保护环境建议书100字
2014/05/13 职场文书
体育专业自荐书
2014/05/29 职场文书
学生干部培训方案
2014/06/12 职场文书
2015年党员自我剖析材料
2014/12/17 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
文明旅游倡议书
2015/04/28 职场文书
nginx location中多个if里面proxy_pass的方法
2021/03/31 Servers
Springboot如何使用logback实现多环境配置?
2021/06/16 Java/Android
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL