2009-06-17 12 views

Antwort

50

Ich erwartete ursprünglich, dass so etwas wie ...

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

... funktionieren würde. Aber ich habe mich geirrt: Webkit erlaubt dir den Wert für alle vier Ecken über borderRadius einzustellen, aber lass dich nicht zurücklesen - also mit dem obigen Code beginnt die Animation immer bei 0 statt 10. IE hat das gleiche Problem. Firefox wird lassen Sie es wieder lesen, so funktioniert alles wie erwartet dort.

Nun ... Border-Radius hat eine Art von Geschichte der Umsetzung Unterschiede.

Glücklicherweise gibt es eine Behelfslösung: nur jeder Eckenradius individuell festlegen:

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

Beachten Sie, dass, wenn Sie Kompatibilität mit älteren Browsern erhalten möchten, können Sie all-out gehen und die alte browser- verwenden vorangestellte Namen:

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

Dies beginnt jedoch ziemlich verrückt zu werden; Ich würde es nach Möglichkeit vermeiden.

+1

Nun, irgendwie. Wenn im Stylesheet ein Radius festgelegt ist, werden die Ecken quadratisch und animieren Sie dann von dort zu 30 (um Ihr Beispiel zu verwenden). Es scheint von 0 auf den gegebenen Wert gehen zu wollen. Ich bekomme das gleiche Ergebnis in Safari und Firefox 3.5 Beta. – user113716

+0

Korrektur: Es scheint in Firefox richtig zu funktionieren. Safari möchte nur erhöhen. – user113716

+0

Sieht aus, in welche Richtung ich auch gehe, Safari beginnt immer mit dem Fangen auf 0. Alle Umgehungsideen? Vielen Dank. – user113716