2009-06-17 4 views

Répondre

50

Je était initialement prévu que quelque chose comme ...

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

... fonctionnerait. Mais, j'avais tort: ​​Webkit vous permet de définir la valeur pour les quatre coins via borderRadius, mais ne vous laissera pas le lire - donc avec le code ci-dessus, l'animation commencera toujours à 0 au lieu de 10. IE a le même problème. Firefox vous permet de le relire, donc tout fonctionne comme prévu.

Bien ... border-radius a en quelque sorte un historique des différences de mise en œuvre.

Heureusement, il y a un travail autour: il suffit de spécifier chaque rayon d'angle individuel:

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

Notez que si vous souhaitez conserver la compatibilité avec les anciens navigateurs, vous pouvez aller tous azimuts et utiliser l'ancien browser- noms préfixés:

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

Cela commence à devenir assez fou si; Je l'éviterais si possible.

+1

Eh bien, en quelque sorte. Jusqu'à présent, s'il y a un rayon défini dans la feuille de style, les coins s'alignent en carré, puis s'animent à 30 (pour utiliser votre exemple) à partir de là. Il semble vouloir aller de 0 à n'importe quelle valeur donnée. J'obtiens le même résultat dans Safari et Firefox 3.5 beta. – user113716

+0

Correction: Il semble fonctionner correctement dans Firefox. Safari veut seulement augmenter. – user113716

+0

On dirait que quelle que soit la direction que je vais, Safari commence toujours par l'accrochage à 0. Des idées de contournement? Merci. – user113716