2011-03-04 22 views
5

Me he encontrado con un problema cuando se desencadena un comportamiento extraño en los elementos relativos y de posición absoluta después de aplicar el elemento con las transformaciones css 3d.Cómo corregir texto crujiente en Safari 5 Mac OS X después de usar las transformaciones css en 3D?

Para arreglar esto, tengo que establecer el color de fondo, pero ¿qué sucede si necesito transparencia?

Aquí es el mínimo para reproducir el error: http://jsfiddle.net/8VABq/3/

+0

Es extraño, por alguna razón, eliminar el suavizado del texto. –

+1

Esto definitivamente parece un error en Safari, recomendaría enviar un informe de error. –

+0

@Andrew Marshall, he enviado un informe de errores a Safari, pero todavía espero encontrar una solución. –

Respuesta

6

Esto es un error extraño.

Mi primer intento involucrado especificar un color de fondo transparente:

.crispy { 
    position: relative; 
    font-size:.9em; 
    background: rgba(255,255,255,0); 
} 

Sin embargo, esto no funciona. De hecho, si juega con el valor alfa (el cero), parece variar de crujiente (0) a normal (1).

Envolver un div interno y especificar la posición estática tampoco funciona.

La única solución que encontré fue esto:

.crispy { 
    position: relative; 
    font-size:.9em; 
    -webkit-font-smoothing: antialiased; 
} 

Esto, sin embargo, hace que todo el texto un poco más borrosa, ya que no utiliza el suavizado de subpíxeles disponibles en los monitores LCD. Esto puede (o no) ser una solución aceptable.

+0

Marqué su respuesta como aceptable, pero aún así es un compromiso. Así que la mejor solución es establecer 'background-color' si es posible; de ​​lo contrario, establecer' -webkit-font-smoothing: antialiased; 'si se necesita transparencia. –

+0

El suavizado de fuente funcionó razonablemente bien para mí ... este es un problema tan complicado, estoy contento con esta solución. –

0

Tienes que cortar alrededor de averiguar lo que pasa a girar para obtener Safari para desactivar el modo no-alias en las transformaciones. En este caso, si se deshace de webkit-perspective o lo configura a 0px, entonces el texto se vuelve no crujiente. Solo necesitas webkit-perspective si haces transformaciones 3D Y realmente utilizas la tercera dimensión Y la necesitas.

+0

Realmente necesito transformaciones 3D, pero en este ejemplo lo reduje a solo declaración '-webkit-perspective'. En el sitio web real, estoy volteando tarjetas dentro de este div. –

3

Todavía estoy experimentando este error en Safari 5.1. Lo que funcionó para mí es establecer el suavizado de fuentes yo mismo. El antialiasing de subpixel debería ser el predeterminado, pero aparentemente no lo es. Si agrego lo siguiente al elemento con la representación de fuente quebrada, todo se ve bien otra vez:

-webkit-font-smoothing: subpixel-antialiased; 
+0

Pensé que estaba arreglado (el ejemplo jsfiddle de mi pregunta se ve muy bien). ¿Puedes reproducirlo con elementos mínimos? –

+0

Lamentablemente, jsfiddle tiene sus propios problemas, pero he aquí un ejemplo: https://gist.github.com/2489198. Tenga en cuenta que la mejor solución es usar '-webkit-font-smoothing' * y * a' background-color'. Zoom con ctrl + scroll para ver las diferencias sutiles. Este problema es muy evidente con fuentes de luz. – molf

+0

Parece que '-webkit-font-smoothing: subpixel-antialiased' aún no funciona correctamente en los elementos relativamente posicionados después del elemento con css3dtransform aplicado. Y la solución que han hecho es aplicar automáticamente '-webkit-font-smoothing: antialiased;' para esos elementos, que elimina la nitidez pero el texto se vuelve demasiado delgado. –