2009-06-17 14 views

Odpowiedz

50

ja pierwotnie zakładano, że coś takiego ...

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

... będzie działać. Ale, myliłem się: Webkit pozwala ci na ustawić wartość dla wszystkich czterech rogów poprzez borderRadius, ale nie pozwoli ci go przeczytać - więc z powyższym kodem animacja zawsze zacznie się od 0 zamiast 10. IE ma ten sam problem. Firefox będzie pozwoli Ci go przeczytać, więc wszystko działa zgodnie z oczekiwaniami.

Cóż ... border-radius ma historię różnic w implementacji.

Na szczęście, istnieje obejście: wystarczy podać każdą promień narożnika indywidualnie:

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

Pamiętaj, że jeśli chcesz, aby zachować zgodność ze starszymi przeglądarkami, można przejść całą-out i używać starego Browser- prefiksowane nazwy:

$("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); 

To jednak zaczyna być szalone; Unikałbym go, jeśli to możliwe.

+1

Cóż, w pewnym sensie. Do tej pory, jeśli w arkuszu stylów znajduje się dowolny promień, rogi będą przyciągać kwadrat, a następnie animować do 30 (aby użyć przykładu) z tego miejsca. Wydaje się, że chce przejść od 0 do dowolnej wartości. Mam taki sam wynik w Safari i Firefox 3.5 beta. – user113716

+0

Korekta: Wygląda na to, że działa poprawnie w przeglądarce Firefox. Safari chce tylko inkrementować. – user113716

+0

Wygląda na to, niezależnie od tego, w którą stronę się wybieram, Safari zawsze zaczyna się od przyciągnięcia do 0. Jakieś sposoby obejścia tego problemu? Dzięki. – user113716