2011-09-21 95 views
0

嗨夥計我今天有一個小問題。我正在嘗試創建一個動畫菜單,但它不工作。任何線索?背景位置不動畫 - jQuery

以下是問題所在。

jQuery代碼

$(document).ready(function(){ 

    $("ul li").hover(function(){ 
     $(this).animate({backgroundPosition: "50% 100%"}); 
    }, 
    function(){ 
     $(this).animate({backgroundPosition: "50% -100px"}); 
    }); 

}); 

CSS代碼

background-color:transparent; 
background-image:url(../images/menu_sel.png); 
background-repeat:no-repeat; 
background-position:50% -100px; 

HTML代碼

<ul> 
<li><a href="#">Home</a></li> 
<li><a href="#">Another Page</a></li> 
</ul> 

我甚至嘗試鼠標懸停在jQuery的,但沒有去:(

$("ul li")  
.mouseover(function(){ 
    $(this).stop().animate({backgroundPosition: "50% 100%"}); 
}) 
.mouseout(function(){ 
    $(this).stop().animate({backgroundPosition: "50% -100px"}); 
}) 

我也嘗試過簡單的CSS更換和它的作品...但不是動畫:(

$("ul li")  
.mouseover(function(){ 
    $(this).css({backgroundPosition: "50% 100%"}); 
}) 
.mouseout(function(){ 
    $(this).css({backgroundPosition: "50% -100px"}); 
}) 

我無法得到它的工作...任何線索?

+0

你能爲我們創建一個jsfiddle來嘗試嗎? –

+1

試過不混合px和%值?可能你正在遭受[這裏描述的Firefox錯誤](http://www.protofunc.com/scripts/jquery/backgroundPosition/)?如果沒有,請製作一個jsfiddle,這樣我們可以做更多的部門分析。 – sg3s

+0

是的,看起來像一個Firefox的錯誤,同時混合%和PX值......聰明的建議......歡呼! – foxybagga

回答

0

想通了!

正如所有這裏所建議的,jQuery不處理複雜的定位。所以下面是最後的工作!

.mouseover(function(){ 
$(this).stop().animate({backgroundPosition: "50% 0"}, {duration:200}); 
}) 
.mouseout(function(){ 
$(this).stop().animate({backgroundPosition: "50% -54px"}, {duration:200}); 
}) 

乾杯!

3

看來,jQuery的不支持動畫兩個值同時,嘗試:

$(this).animate({backgroundPositionY:-100}); 
+0

不起作用:( – foxybagga

6

jQuery的不能動畫複雜的CSS值..它是你不能這樣做同樣的原因:

$('#thing').animate({margin: "10px 0 0 10px"}); 

你必須動畫的各個屬性,如:

$('#thing').animate({backgroundPositionX: "50%", backgroundPositionY: "-100px"}); 
+0

謝謝你的答案隊友,但它不工作:( – foxybagga

+2

這是一個演示,以證明它的作品。http://jsfiddle.net/LuPby/ – CodeInfused

+0

啊,我道歉,但我的意思是它不適合我,你的建議太棒了! – foxybagga