`
癫觉士
  • 浏览: 19521 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

一款jquery编写的滑动菜单效果

阅读更多

这是一款jquery编写的滑动菜单效果,当点击导航文字时,圆形按钮滑动到当前位置。圆形按钮能根据导航文字的多少自动伸缩。

 


文件夹中有两个文件,一个是slider_click.html,意思是点击某个选项时滚动。还有一个是slider_hover.html,意思是鼠标移动到某个选项时滚动。有人会问‘不是把click改成hover’不就行了么,但改成hover后会出现一个问题:鼠标不停离开上一个li,进入下一个li,滚动就不停执行。如果从‘日志’移动到‘互动空间’,移动就会停顿两次。为了解决这个问题,slider_hover.html里又增加了一段代码,控制鼠标停止运动时才执行。

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>目标滑动到当前位置</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script>
	$(function(){
	
		$cur=$('.menu').find('.cur');
		$li=$('.menu').find('li');
		var lastLen=0;//记录前次的距离
		var step=0;//圆角形状惯性奔出的距离
		$li.click(function(){
		
				var $index=$(this).index();
				var length=0;
				var m=0;
				$(this).find('a').blur();
				$('#content').empty().append($(this).find('a').html());//将文本加入撑宽容器
				for(var i=0;i<$index;i++)//累加宽度和边距值为运动距离
				{
					length+=$li.eq(i).width()+40;
				}
				length+=28;//加入初始边距
				if(length>lastLen){//如果向右运动,step为正					
					step=30;
				}
				else{
					step=-30;
				}
					
				lastLen=length;//保存此次的距离
				$cur.animate({left:length+step},200,function(){  $cur.animate({left:length},200)    });
			
			})
	
	})

</script>
<style type="text/css">
	ul,li,ol{ margin:0px;padding:0px;list-style:none}
	.nav li{ width:12px;height:48px;overflow:hidden;float:left;background:url(images/nav_bg.gif) }
	.nav li.nav_l{ background-position:0px 0px }
	.nav li.nav_m{ width:670px;background-position:0px -98px }
	.nav li.nav_r{ background-position:0px -49px }
	.nav .menu{ position:relative;height:20px;}
	.nav .menu a{ height:20px;line-height:200px;display:block;float:left;overflow:hidden;position:relative;z-index:200; background:url(images/nav_menu.png) no-repeat;  }
	.nav ol { float:left;margin-top:13px; }
	.nav ol li{ background:none;text-align:center;margin-left:40px }
	.nav ol li.size2 a,.nav ol li.size2{ width:44px }
	.nav ol li.size4 a,.nav ol li.size4{ width:80px }
	.nav .menu a.item0{ background-position:5px 0px }
	.nav .menu a.item1{ background-position:-79px 0px }
	.nav .menu a.item2{ background-position:-150px 0px }
	.nav .menu a.item3{ background-position:-223px 0px }
	.nav .menu a.item4{ background-position:-294px 0px }
	.nav .menu .cur{ height:32px; position:absolute;left:28px;top:9px; z-index:100; }
	.nav .menu .cur div{ height:32px;float:left;background:url(images/nav_menu_cur.png) }
	.nav .menu .cur .cur_l{ width:15px;background-position:0px 0px } 
	.nav .menu .cur .cur_m{ height:32px;overflow:hidden;padding:0px 3px;line-height:200px;background-position:0px -30px }
	.nav .menu .cur .cur_r{ width:15px;background-position:0px -62px }
</style>
</head>


<body>

	<div class="nav">
		<ul>
        	<li class="nav_l"></li>
            <li class="nav_m">
            	<div class="menu">
                		<div class="cur">
                        	<div class="cur_l"></div>
                            <div id="content" class="cur_m">首页</div>
                            <div class="cur_r"></div>	
                        </div>
                        <ol>	
                            <li class="size2"><a class="item0" href="javascript:void(0)">首页</a></li>
                            <li class="size2"><a class="item1" href="javascript:void(0)">日志</a></li>
                            <li class="size2"><a class="item2" href="javascript:void(0)">相册</a></li>
                            <li class="size2"><a class="item3" href="javascript:void(0)">微博</a></li>
                            <li class="size4"><a class="item4" href="javascript:void(0)">互动空间</a></li>
                            <li class="size2"><a class="item2" href="javascript:void(0)">留言</a></li>
                            <li class="size2"><a class="item3" href="javascript:void(0)">私信</a></li>
                        </ol>
                </div>
            </li>
            <li class="nav_r"></li>
        </ul>
    </div>

</body>
</html>

 

 

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>目标滑动到当前位置</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script>
	var e;//当前li元素的索引值
	var lastLen=0;//记录前次的距离
	var step=0;//圆角形状惯性奔出的距离
	var posi;//计时运动
	function slide(){
		
				var $index=e;
				var length=0;
				var m=0;
				$li.eq(e).find('a').blur();
				
				for(var i=0;i<$index;i++)//累加宽度和边距值为运动距离
				{
					length+=$li.eq(i).width()+40;
				}
				length+=28;//加入初始边距
				if(length>lastLen){//如果向右运动,step为正					
					step=30;
				}
				else{
					step=-30;
				}
					
				lastLen=length;//保存此次的距离
				clearInterval(posi) ;
				$cur.animate({left:length+step},200,function(){ $cur.animate({left:length},100)   });
				$('#content').empty().append($li.eq(e).find('a').html());//将文本加入撑宽容器
			
			}
			

	$(function(){
	
		$cur=$('.menu').find('.cur');
		$li=$('.menu').find('li');
		$li.mousemove(function(){   //当鼠标移动时,不执行posi,当鼠标静止100毫秒时posi执行。
									//添加这段的目的是防止鼠标在导航上移动时,因为不停离开上一个li,进入下一个li而不停执行posi,造成运动断断续续。
			
			clearInterval(posi);
			e=$(this).index();//记录当前元素的索引值
			posi=setInterval('slide()',100);
		
		}).mouseout(function(){ clearInterval(posi)})
	
	})

</script>
<style type="text/css">
	ul,li,ol{ margin:0px;padding:0px;list-style:none}
	.nav li{ width:12px;height:48px;overflow:hidden;float:left;background:url(images/nav_bg.gif) }
	.nav li.nav_l{ background-position:0px 0px }
	.nav li.nav_m{ width:670px;background-position:0px -98px }
	.nav li.nav_r{ background-position:0px -49px }
	.nav .menu{ position:relative;height:20px;}
	.nav .menu a{ height:20px;line-height:200px;display:block;float:left;overflow:hidden;position:relative;z-index:200; background:url(images/nav_menu.png) no-repeat;  }
	.nav ol { float:left;margin-top:13px; }
	.nav ol li{ background:none;text-align:center;margin-left:40px }
	.nav ol li.size2 a,.nav ol li.size2{ width:44px }
	.nav ol li.size4 a,.nav ol li.size4{ width:80px }
	.nav .menu a.item0{ background-position:5px 0px }
	.nav .menu a.item1{ background-position:-79px 0px }
	.nav .menu a.item2{ background-position:-150px 0px }
	.nav .menu a.item3{ background-position:-223px 0px }
	.nav .menu a.item4{ background-position:-294px 0px }
	.nav .menu .cur{ height:32px; position:absolute;left:28px;top:9px; z-index:100; }
	.nav .menu .cur div{ height:32px;float:left;background:url(images/nav_menu_cur.png) }
	.nav .menu .cur .cur_l{ width:15px;background-position:0px 0px } 
	.nav .menu .cur .cur_m{ height:32px;overflow:hidden;padding:0px 3px;line-height:200px;background-position:0px -30px }
	.nav .menu .cur .cur_r{ width:15px;background-position:0px -62px }
</style>
</head>


<body>

	<div class="nav">
		<ul>
        	<li class="nav_l"></li>
            <li class="nav_m">
            	<div class="menu">
                		<div class="cur">
                        	<div class="cur_l"></div>
                            <div id="content" class="cur_m">首页</div>
                            <div class="cur_r"></div>	
                        </div>
                        <ol>	
                            <li class="size2"><a class="item0" href="javascript:void(0)">首页</a></li>
                            <li class="size2"><a class="item1" href="javascript:void(0)">日志</a></li>
                            <li class="size2"><a class="item2" href="javascript:void(0)">相册</a></li>
                            <li class="size2"><a class="item3" href="javascript:void(0)">微博</a></li>
                            <li class="size4"><a class="item4" href="javascript:void(0)">互动空间</a></li>
                            <li class="size2"><a class="item2" href="javascript:void(0)">留言</a></li>
                            <li class="size2"><a class="item3" href="javascript:void(0)">私信</a></li>
                        </ol>
                </div>
            </li>
            <li class="nav_r"></li>
        </ul>
    </div>

</body>
</html>

 

1
1
分享到:
评论

相关推荐

    jQUERY滑动菜单,滑动效果

    本文将深入探讨如何利用jQuery实现滑动菜单及其背后的动画效果。 ### 一、jQuery简介 jQuery是由John Resig于2006年发布的JavaScript库,它简化了HTML文档遍历、事件处理、动画和Ajax交互。jQuery的核心特性包括...

    jQuery车门滑动效果菜单.rar

    本文将详细讲解这一效果的实现原理与步骤。 首先,我们要理解jQuery的基本概念。jQuery是一个高效、简洁的JavaScript库,它极大地简化了JavaScript代码,提供了丰富的DOM操作、事件处理、动画设计等功能。在这个...

    使用JQuery编写的水平真正滑动下拉菜单

    "使用JQuery编写的水平真正滑动下拉菜单"是一个实现这种交互效果的技术实践,它不同于常见的滚动效果,而是通过平滑的滑动动画来展开和收起子菜单,提供了更为流畅的视觉体验。 首先,我们要理解JQuery的基础。...

    jquery超炫滑动菜单

    总的来说,创建一个“超炫滑动菜单”需要理解HTML、CSS和jQuery的基本用法。通过结合这些技术,我们可以为用户提供更直观、更吸引人的导航体验。在实际项目中,还可以根据需求添加更多的交互细节,如动画效果的缓动...

    jquery高亮滑动导航菜单.rar

    4. 编写jQuery脚本,监听用户交互,如点击事件,并执行相应的操作,如改变高亮状态、滑动菜单等。 5. 对于响应式设计,调整CSS以适应不同屏幕尺寸。 6. 如果需要,实现Ajax加载功能,更新页面内容。 在"jiaoben489...

    jquery 滑动门效果

    **jQuery滑动门效果**是一种常见的前端交互设计,主要用于创建导航菜单或图片轮播效果。在网页设计中,滑动门效果能为用户提供流畅、直观的界面体验,增强网站的吸引力和可操作性。这个效果通常由jQuery库来实现,...

    jQuery弹性滑动导航菜单

    在网页设计中,导航菜单...开发者可以通过导入jQuery库,编写少量的JavaScript代码,就能实现具有弹性和动态效果的导航菜单。这个压缩包提供的资源可以帮助开发者快速搭建并自定义自己的滑动菜单,提升网站的用户体验。

    jquery滑动菜单特效

    "jQuery滑动菜单特效"就是这样一个技术,它模仿了iPhone的图标滑动行为,为网页菜单带来了生动的触控体验。这个特效不仅提供了视觉上的享受,还能让用户在移动设备上更加流畅地浏览和操作菜单。 **jQuery库基础** ...

    JQuery Tab 滑动们导航菜单效果

    本文将深入探讨如何使用JQuery库实现一种独特的“滑动门”(Sliding Doors)导航菜单效果。这种效果通过动态改变元素的CSS属性,为用户带来流畅且吸引人的交互体验。 首先,让我们理解什么是“滑动门”技术。在UI...

    jquery左右伸缩滑动效果.rar

    "jQuery左右伸缩滑动效果"是一种常见的JavaScript特效,它广泛应用于导航菜单、图片轮播、内容切换等多个场景。jQuery库以其简洁的API和丰富的插件,为开发者提供了实现这种效果的便利。本文将详细介绍如何利用...

    css jquery左右滑动展开的图文导航菜单.rar

    "CSS jQuery左右滑动展开的图文导航菜单"是一种创新的交互式菜单设计,它结合了CSS样式和jQuery库来实现动态的、响应式的用户体验。下面我们将深入探讨这个主题。 首先,CSS(层叠样式表)在这里主要用于定义导航...

    jquery菜单滑动实例

    jQuery作为一款强大的JavaScript库,提供了丰富的功能来实现各种动态效果,包括滑动菜单。本实例将详细介绍如何利用jQuery和一个名为`jquery.backgroundPosition.js`的插件创建一个滑动菜单。 ### jQuery基础 ...

    6种jQuery导航栏滑动动画效果

    而`js`文件则是JavaScript代码,包含使用jQuery编写的动画效果逻辑。 例如,为了实现滑动展开效果,JS代码可能如下: ```javascript $(document).ready(function(){ $('.nav-item').hover(function(){ $(this)....

    简单的jQuery竖向滑动菜单

    【标题】"简单的jQuery竖向滑动菜单"涉及的核心知识点主要集中在jQuery库的使用和创建交互式的CSS3动画效果上,适用于网页设计和前端开发。jQuery是一个轻量级的JavaScript库,它简化了HTML文档遍历、事件处理、动画...

    jquery 菜单效果

    第三个效果可能是触摸友好的触控滑动菜单。考虑到移动设备的广泛使用,这种菜单在用户触摸屏幕时会响应滑动手势。可以利用`swipe`插件或者直接使用`touchstart`, `touchmove`, `touchend`等触摸事件来捕捉用户的滑动...

    一个漂亮的Jquery写的滑动导航菜单

    本项目聚焦于一个由Jquery编写的滑动导航菜单,这是一个轻量级且美观的解决方案,对于提升用户体验有着显著的效果。 Jquery是一个广泛使用的JavaScript库,它简化了JavaScript的DOM操作、事件处理和动画效果。在本...

    wordpress主题七款jquery滑动效果的主题

    在探讨“wordpress主题七款jquery滑动效果的主题”这一话题时,我们首先需要理解几个关键词:WordPress、jQuery以及滑动效果。接下来,我们将详细介绍这些概念,并深入分析这七款jQuery滑动效果的主题。 ### 一、...

    jquery鼠标悬停滑动下拉导航菜单效果.zip

    "jQuery鼠标悬停滑动下拉导航菜单效果"是一个常见的网页交互设计技术,广泛应用于企业网站和商城网站,以提升用户体验。这个效果通过结合JavaScript库jQuery实现,使得当用户将鼠标悬停在菜单项上时,会滑动展示下...

    jQuery.mmenu侧滑菜单·

    jQuery.mmenu是一款强大的JavaScript插件,专为创建响应式的侧滑菜单而设计。这款插件在Web开发领域中被广泛使用,因为它能够提供流畅、功能丰富的用户体验,尤其适合移动设备和触摸屏。以下是对该插件及其核心特性...

Global site tag (gtag.js) - Google Analytics