2010-10-09 85 views
0

我想要做一个非常非常简单的鼠标悬停动画改变背景位置。Animate backgroundPostion总是返回50%?

JS

$('li.services_w') 
    .css({ 
     backgroundPosition: "0px 0px" 
    }) 
    .mouseover(function() { 
     $(this).stop().animate({ 
      backgroundPosition: "(0px -35px)" 
     }, { 
      duration: 500 
     }) 
    }) 
    .mouseout(function() { 
     $(this).stop().animate({ 
      backgroundPosition: "(0px 0px)" 
     }, { 
      duration: 200, 
      complete: function() { 
       $(this).css({ 
        backgroundPosition: "0px 0px" 
       }) 
      } 
     }) 
    }); 

除了每次我运行此代码,背景总是返回background-position: 0 50%为鼠标悬停的结果。不管我改变那些数字!我向你保证这是我使用的唯一的JavaScript。

CSS

.services_w { 
    height: 35px; 
    overflow:hidden; 
    background: url("../img/services_w.jpg") repeat 0px 0px; 
} 
.services_w:hover { 
    background-position: 0px -35px; 
} 

HTML

<div class="grid_10 nav"> 
    <ul class="lavaLamp"> 
    <li class="current"><a href="index.html">home</a></li> 
    <li class="services_w"><a href="services.html">services</a></li> 
    ... 
+1

尝试移除它周围的“()”。 – 2010-10-09 22:12:42

+1

我觉得尼克得到了它==> http://jsfiddle.net/nr75d/ --------------最后,用'.hover()'==>保存几个关键笔划。 http://jsfiddle.net/Sqv6Q/ – 2010-10-09 22:15:20

+0

@nick craver,你在说什么()? – Trip 2010-10-09 22:17:08

回答

2

删除多余的"(....)"这是无效的CSS,像这样:

$('li.services_w') 
    .css({backgroundPosition: "0px 0px"}) 
    .mouseover(function(){ 
     $(this).stop().animate({backgroundPosition:"0px -35px"}, {duration:500}) 
    }) 
    .mouseout(function(){ 
     $(this).stop().animate({backgroundPosition:"0px 0px"}, {duration:200, complete:function(){ 
      $(this).css({backgroundPosition: "0px 0px"}) 
     }}) 
    }); 

还是有点用清洁剂.hover()并指定直接持续时间:

$('li.services_w').css({backgroundPosition: "0px 0px"}) 
    .hover(function(){ 
     $(this).stop(true, true).animate({backgroundPosition:"0px -35px"}, 500); 
    }, function(){ 
     $(this).stop(true, true).animate({backgroundPosition:"0px 0px"}, 200); 
    }); 
+0

圣洁的废话你有很多的要点。 – Trip 2010-10-09 22:25:03

+0

@Trip - 拥有*方式的人*超过我:) http://stackoverflow.com/users – 2010-10-09 22:28:08

+0

出于猜测,第二个清洁版本实际上并没有对它进行动画处理。不知怎的,动画得到了鼠标悬停和立即改变的弃用。 – Trip 2010-10-09 22:30:09