`
andrew1024
  • 浏览: 74218 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<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>
分享到:
评论

相关推荐

    滑动菜单,Tab,选项卡,横向,竖向都有

    滑动菜单,Tab,选项卡,横向,竖向都有

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

    从提供的文件信息中,我们可以了解到以下知识点关于使用JavaScript实现滑动菜单效果的代码实现: 1. **基本概念:滑动菜单效果**:滑动菜单效果是一种常见的网页交互设计,常见于选项卡(Tab)和导航菜单中。通过...

    自定义tabhost(动态添加选项+带自动水平滑动选项卡+手势切换选项卡及内容功能)

    然而,标准的TabHost功能有限,往往需要进行自定义以满足更复杂的需求,如动态添加选项、自动水平滑动以及手势切换选项卡。下面我们将深入探讨如何实现这样的自定义TabHost。 一、自定义TabHost的基本原理 自定义...

    tab跟随底部横线滑动

    在Web开发领域,"tab跟随底部横线滑动"是一种常见的用户界面设计,它通常用于创建一个多选项卡的交互式布局。这种设计允许用户通过点击不同的tab来切换内容,而底部的横线会动态地移动以指示当前所选的tab。这种效果...

    滑动门多种效果,横向,纵向菜单

    此外,"滑动菜单,Tab,选项卡,横向,竖向都有.htm"这个文件可能包含了一系列的滑动门实例,涵盖了横向和纵向的不同布局,以及可能包括Tab式的切换效果。Tab式设计是滑动门效果的另一种形式,它允许用户在多个内容...

    tab滑动效果

    【标题】:“tab滑动效果”通常指的是在移动应用或者网页设计中,用户可以通过滑动操作在多个选项卡之间切换的交互方式。这种效果常见于Android和iOS平台的应用程序,尤其是那些需要展示多个类别或者视图但又希望...

    jquery选项卡切换插件制作slider滑动选项卡切换

    本教程将聚焦于利用jQuery来制作一个滑动选项卡切换插件,即“slider滑动选项卡切换”。这种组件常见于网站的导航、展示内容或者产品介绍中,能够以动态、吸引人的形式展示信息。 首先,我们需要理解jQuery的基本...

    微信小程序的滑动组件---可滚动的tab栏

    同时,添加`swiper`组件,用于实现滑动效果。 3. 在`ScrollTab.wxss`中,设置`view`和`swiper`的样式,如宽度、高度、内边距等。同时,通过`background-color`和`color`属性来自定义背景色和字体色。 4. 在`...

    门户网站竖向TAB选项卡,定时自动切换

    2. **竖向选项卡**:相对于常见的横向选项卡,竖向选项卡更适合空间有限或者需要展示较多选项卡的情况。在门户网站上,竖向布局可以更有效地利用垂直空间,使得导航更加清晰。 3. **定时自动切换**:这是一种增强...

    安卓FragmentTab选项卡相关-ViewPagerFragment模仿百度贴吧客户端滑动tab功能.zip

    这个压缩包“安卓FragmentTab选项卡相关-ViewPagerFragment模仿百度贴吧客户端滑动tab功能.zip”显然包含了一个实例,展示了如何使用Fragment和ViewPager来创建类似百度贴吧客户端的滑动选项卡功能。现在我们将详细...

    jQuery滑动门选项卡上下滚动切换特效

    这里可能有一个或多个.js文件,包含实现滑动门选项卡和上下滚动切换特效的jQuery脚本。 在实现这一特效时,开发者需要熟练掌握jQuery的选择器、事件绑定、DOM操作和动画方法。例如,`hover()`函数用于监听鼠标悬停...

    uniapp实现可滑动选项卡

    本文实例为大家分享了uniapp实现可滑动选项卡的具体代码,供大家参考,具体内容如下 tabControl-tag.vue &lt;view class=tabList :style=isEquall

    viewPager+Fragment实现滑动选项卡(访百度客户端)

    总结起来,实现`ViewPager+Fragment`滑动选项卡的关键步骤包括:创建`ViewPager`,创建`Fragment`实例,创建`FragmentPagerAdapter`,设置`ViewPager`的适配器,以及将`TabLayout`与`ViewPager`关联。通过这些步骤,...

    垂直选项卡竖版选项卡切换文字列表源码下载

    "垂直选项卡竖版选项卡切换文字列表源码下载" 这个标题揭示了我们讨论的核心内容,即一个适用于网页设计的源码实现。它特别提到了“垂直选项卡”和“竖版选项卡切换”,这意味着源码提供了一种布局方式,使得在网页...

    仿京东滑动选项卡

    【仿京东滑动选项卡】是一种常见的网页交互设计,它在电商网站中广泛使用,能够帮助用户方便地浏览和切换不同的商品分类或信息模块。京东作为国内知名的电商平台,其滑动选项卡的设计确实独具匠心,既提升了用户体验...

    JS TAB切换 多个效果的源码

    5. **竖向tab标签滑动门选项卡**: 滑动门效果通常是指当用户点击一个选项时,其他选项会向相反方向移动,而被选中的选项则向用户移动,形成一种开闭的效果。这需要利用JS控制各个选项的位置和速度,以及CSS的动画...

    JS实现同一个网页布局滑动门和TAB选项卡实例

    本实例介绍了如何通过JavaScript来实现滑动门(Sliding Doors)效果以及TAB选项卡(Tab Menu)的布局。滑动门技术常用于自适应布局和响应式设计中,而TAB选项卡则广泛用于内容区域的分类切换显示。 首先,我们来...

    安卓 竖直选项卡 verticaltablayout_viewpager

    1. **VerticalTabLayout**: 传统的TabLayout是水平布局,展示在屏幕顶部,而VerticalTabLayout则将选项卡改为垂直排列,节省横向空间,更适合在小屏设备或需要展示多个选项卡的场景中使用。开发者可以通过自定义...

    jQuery下拉选项卡横向导航代码.zip

    在这款下拉选项卡导航代码中,jQuery被用来处理鼠标事件,实现动态效果,如滑动展开和收起子菜单。通过使用CSS样式和JavaScript逻辑,开发者可以定制导航栏的外观和行为,使其符合网站的整体设计风格。 选项卡式...

Global site tag (gtag.js) - Google Analytics