2009-06-17 39 views

回答

50

我原本預計類似...

$("selector") 
    .css({borderRadius: 10}); 
    .animate({borderRadius: 30}, 900); 

...會工作。但是,我錯了:Webkit允許您通過borderRadius設置所有四個角的值,但不會讓您讀回它 - 所以對於上面的代碼,動畫將始終從0開始,而不是從10開始。IE有同樣的問題。火狐讓你讀回來,所以一切都如預期那樣。

呃... border-radius有一些實現差異的歷史。

幸運的是,有一個變通辦法:只需分別指定每個角半徑:

$("selector") 
    .css({ 
    borderTopLeftRadius: 10, 
    borderTopRightRadius: 10, 
    borderBottomLeftRadius: 10, 
    borderBottomRightRadius: 10 }) 
    .animate({ 
    borderTopLeftRadius: 30, 
    borderTopRightRadius: 30, 
    borderBottomLeftRadius: 30, 
    borderBottomRightRadius: 30}, 900); 

需要注意的是,如果你想保持與舊的瀏覽器兼容,你可以全力以赴,並用舊的瀏覽器的前綴名稱:

$("selector") 
    .css({ 
    borderTopLeftRadius: 10, 
    borderTopRightRadius: 10, 
    borderBottomLeftRadius: 10, 
    borderBottomRightRadius: 10, 
    WebkitBorderTopLeftRadius: 10, 
    WebkitBorderTopRightRadius: 10, 
    WebkitBorderBottomLeftRadius: 10, 
    WebkitBorderBottomRightRadius: 10, 
    MozBorderRadius: 10 
    }) 
    .animate({ 
    borderTopLeftRadius: 30, 
    borderTopRightRadius: 30, 
    borderBottomLeftRadius: 30, 
    borderBottomRightRadius: 30, 
    WebkitBorderTopLeftRadius: 30, 
    WebkitBorderTopRightRadius: 30, 
    WebkitBorderBottomLeftRadius: 30, 
    WebkitBorderBottomRightRadius: 30, 
    MozBorderRadius: 30 
    }, 900); 

雖然這開始變得非常瘋狂;如果可能,我會避免它。

+1

嗯,有點檢測。到目前爲止,如果在樣式表中設置了任何半徑,則角將捕捉到正方形,然後從那裏動畫到30(以使用您的示例)。它似乎想從0到任何給定的值。我在Safari和Firefox 3.5 beta中獲得了相同的結果。 – user113716 2009-06-18 01:06:50