本文实例讲述了jQuery实现带滚动线条导航效果的方法。分享给大家供大家参考。具体分析如下:
最早见到这种导航是在魅族的官网,当时(去年)觉得挺不错的但自己不会JavaScript,因此那时“可望而不可及”。今日去手机QQ for Android官网,又发现类似这样的导航,反正自己也没啥事,所以就尝试用jQuery做出这样的效果。
效果如下:
首页
说说
日志
相册
CSS:
1
2
3
4
5
6
7
8
|
body,ul,li{ margin : 0 ; padding : 0 ;}
#testnav{; height : 80px ; background : #333 ;}
.testmenu{ width : 320px ; padding-top : 45px ; margin : 0 auto ;}
.testbox div{ float : left ; width : 80px ; height : 30px ; text-align : center ;}
.testbox a{ color : #ccc ; text-decoration : none ; font : 700 12px / 1 "宋体" ;}
.testbox a:hover{ color : #CCEEFF ; text-decoration : underline ;}
.testline-box{ width : 100% ; background : #eee ;}
.testline{ display : block ; height : 3px ; width : 80px ; background : #999 ;}
|
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
< div id = "testnav" >
< div class = "testmenu" >
< div class = "testbox" >
< div >< a href = "javascript:void(0)" >首页</ a ></ div >
< div >< a href = "javascript:void(0)" >说说</ a ></ div >
< div >< a href = "javascript:void(0)" >日志</ a ></ div >
< div >< a href = "javascript:void(0)" >相册</ a ></ div >
</ div >
< div style = "clear:both;" ></ div >
< div class = "testline-box" >
< span class = "testline" ></ span >
</ div >
</ div >
</ div >
|
jQuery:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
var $line=$( "span.testline" );
var $w=$( ".testbox > div" ).width();
var m=0;
$( ".testbox > div" ).each( function (n){
var x=$w*n;
$( this ).mouseenter( function (){
$line.stop( true , true ).animate({ "margin-left" :x}, "slow" , "easeOutBack" );
});
$( "a" , this ).click( function (){
m=x;
});
});
$( ".testbox" ).mouseleave( function (){
$line.stop( true , true ).animate({ "margin-left" :m}, "slow" , "easeOutBack" );
});
|
代码写的比较粗糙,再加上自己水平有限,或许您可以简化写的更好(反正大致思路应该就是这样+_+)。
注意:代码中使用了easing插件的效果。记得要去下载并引用这个插件。如果不想使用easing插件则可将JS中的“easeOutBack”删掉或者换成“swing”。
demo中的菜单的链接地址我使用了javascript:void(0)代替,主要目的是为了方便演示效果。在实际运用中,我们可以根据当前的url来判断当前所在位置,确定位置之后再重新给JavaScript中变量m赋值,从而能确定线条应处于哪个菜单下。当然肯定还有其他方法来判断当前位置。
希望本文所述对大家的jQuery程序设计有所帮助。