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;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背景位移动画。后二个颜色渐变的例子,也是通过渐变背景图片上下移动产生的。