2009-06-17 15 views

Respuesta

50

que esperaba originalmente que algo así ...

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

... funcionaría. Pero, estaba equivocado: Webkit le permite establecer el valor de las cuatro esquinas a través de borderRadius, pero no le permitirá leerlo, por lo que con el código anterior, la animación siempre comenzará en 0 en lugar de 10. IE tiene el mismo problema Firefox te permite leerlo, así que todo funciona como se esperaba allí.

Bien ... border-radius tiene una especie de historial de diferencias de implementación.

Afortunadamente, hay una solución alternativa: sólo tiene que especificar cada radio de esquina de forma individual:

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

Tenga en cuenta que si desea mantener la compatibilidad con navegadores antiguos, se puede ir sin cuartel y utilizar el viejo browser- nombres prefijados:

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

Esto comienza a ponerse bastante loco; Lo evitaría si es posible.

+1

Bueno, algo así. Hasta ahora, si hay un radio establecido en la hoja de estilos, las esquinas se ajustarán a escuadra, luego animar a 30 (para usar su ejemplo) desde allí. Parece querer ir de 0 a cualquier valor que se le dé. Obtengo el mismo resultado en Safari y Firefox 3.5 beta. – user113716

+0

Corrección: Parece que funciona correctamente en Firefox. Safari solo quiere incrementar. – user113716

+0

Parece que en cualquier dirección que vaya, Safari siempre comienza por ajustar a 0. ¿Alguna idea alternativa? Gracias. – user113716

Cuestiones relacionadas