jquery动画函数animate是不支持背景移动动画的,即无法对backgroundPosition进行处理,需要使用一个插件,这个插件名为jquery.backgroundPosition,接下来将使用这个插件,制作一个背景变化的菜单。

制作过程
1、创建如下html菜单结构
- <ul>
- <li><a href="http://www.36ria.com/">首页</a></li>
- <li><a href="http://www.36ria.com/">关于作者</a></li>
- <li><a href="http://www.36ria.com/">联系作者</a></li>
- </ul>
2、加上css样式
- ul {list-style:none;margin:0;padding:0;}
- li {float:left;width:100px;margin:0;padding:0;text-align:center;font-size:14px;}
- li a {display:block;padding:5px 10px;height:100%;color:#FFF;text-decoration:none;border-right:1px solid #FFF;}
- li a {background:url(../images/bg2.jpg) repeat 0 0;}
- li a:hover, li a:focus, li a:active {background-position:-150px 0;}
示例中有5个demo,共用了四张背景图片:




分别对应相应的动画demo样式:
- #a a {background:url(../images/bg.jpg) repeat -20px 35px;}
- #b a {background:url(../images/bg2.jpg) repeat 0 0;}
- #c a {background:url(../images/bg3.jpg) repeat 0 0;}
- #d a {background:url(../images/bg4.jpg) repeat 0 0;}
3、javascript脚本
引入jquery库和jquery.backgroundPosition:
- <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
- <script type="text/javascript" src="js/jquery.backgroundPosition.js"></script>
- $(function(){
- $('#a a')
- .css( {backgroundPosition: "-20px 35px"} )
- .mouseover(function(){
- $(this).stop().animate({backgroundPosition:"(-20px 94px)"}, {duration:500})
- })
- .mouseout(function(){
- $(this).stop().animate({backgroundPosition:"(40px 35px)"}, {duration:200, complete:function(){
- $(this).css({backgroundPosition: "-20px 35px"})
- }})
- })
- $('#b a')
- .css( {backgroundPosition: "0 0"} )
- .mouseover(function(){
- $(this).stop().animate({backgroundPosition:"(-150px 0)"}, {duration:500})
- })
- .mouseout(function(){
- $(this).stop().animate({backgroundPosition:"(-300px 0)"}, {duration:200, complete:function(){
- $(this).css({backgroundPosition: "0 0"})
- }})
- })
- $('#c a')
- .css( {backgroundPosition: "0 0"} )
- .mouseover(function(){
- $(this).stop().animate({backgroundPosition:"(0 -250px)"}, {duration:500})
- })
- .mouseout(function(){
- $(this).stop().animate({backgroundPosition:"(0 0)"}, {duration:500})
- })
- $('#d a')
- .css( {backgroundPosition: "0 0"} )
- .mouseover(function(){
- $(this).stop().animate({backgroundPosition:"(0 -250px)"}, {duration:500})
- })
- .mouseout(function(){
- $(this).stop().animate({backgroundPosition:"(0 0)"}, {duration:500})
- })
- });
引入jquery.backgroundPosition后animate()开始支持backgroundPosition背景位移动画。后二个颜色渐变的例子,也是通过渐变背景图片上下移动产生的。
原文:http://snook.ca/archives/javascript/jquery-bg-image-animations/

不错
我现在用的是那个默认的导航栏, 不过加了一串页面链接函数 让他分类和页面都显示嘿嘿.
这个很实用
写得非常之详细,很好的资源
怎么才能让它能保持当前选中的页面那
呵呵,这个要你自己加代码了,主要是当点击菜单项后,加上样式