He estado usando CSS3 transform para rotar imágenes y cuadros de texto con bordes en mi sitio web.
El problema es que el borde parece irregular en Chrome, como un juego (de baja resolución) sin Anti-Aliasing. En IE, Opera y FF se ve mucho mejor porque se usa AA (que todavía es claramente visible pero no está tan mal). No puedo probar Safari porque no tengo una Mac.
La foto girada y el texto en sí se ven bien, solo el borde se ve irregular.
El CSS que uso es este:
.rotate2deg {
transform: rotate(2deg);
-ms-transform: rotate(2deg); /* IE 9 */
-webkit-transform: rotate(2deg); /* Safari and Chrome */
-o-transform: rotate(2deg); /* Opera */
-moz-transform: rotate(2deg); /* Firefox */
}
¿Hay alguna forma de solucionar esto, por ejemplo, forzando a Chrome a usar AA?
Ejemplo a continuación:
Respuestas:
En caso de que alguien busque esto más adelante, un buen truco para deshacerse de esos bordes irregulares en las transformaciones CSS en Chrome es agregar la propiedad CSS
-webkit-backface-visibility
con un valor dehidden
. En mis propias pruebas, esto los ha suavizado por completo. Espero que ayude.fuente
padding: 1px; -webkit-background-clip: content-box;
padding: 1px;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-background-clip:content-box;background-clip:content-box;
Si está utilizando en
transition
lugar detransform
,-webkit-backface-visibility: hidden;
no funciona. Aparece un borde irregular durante la animación para un archivo png transparente.Para resolverlo utilicé:
outline: 1px solid transparent;
fuente
Agregar un borde transparente de 1 px activará el suavizado
Alternativamente, agregue una sombra de cuadro transparente de 1px.
fuente
outline: 1px solid transparent;
funcionó bien para mí. Las otras soluciones anteriores no funcionaron lo suficientemente bien.outline: 1px solid transparent;
desencadenar anti-aliasing también en Firefox 52 (que tiene los mismos problemas de Chrome)Prueba la transformación 3d. Esto funciona como un encanto!
fuente
preserve-3d
;rotate
todavía se puede usar sin cambiar arotateZ
) sí.La respuesta elegida (ni ninguna de las otras respuestas) no funcionó para mí, pero esto sí:
img {outline:1px solid transparent;}
fuente
He tenido un problema con un gradiente CSS3 con -45deg. El
background
inclinado, era muy irregular, similar pero peor que la publicación original. Entonces comencé a jugar con ambosbackground-size
. Esto alargaría la irregularidad, pero todavía estaba allí. A continuación, además leí que otras personas están teniendo problemas también a 45 grados incrementos por lo ajusté a partir-45deg
de-45.0001deg
y mi problema fue resuelto.En mi CSS a continuación,
background-size
estaba inicialmente30px
y eldeg
gradiente de fondo era exactamente-45deg
, y todos los fotogramas clave eran30px 0
.fuente
Es posible que pueda enmascarar las irregularidades con sombras de cuadro borrosas . El uso de -webkit-box-shadow en lugar de box-shadow se asegurará de que no afecte a los navegadores que no sean webkit. Sin embargo, es posible que desee consultar Safari y los navegadores webkit móviles.
El resultado es algo mejor, pero aún mucho menos bueno que con los otros navegadores:
fuente
Pensé que también incluiríamos nuestra solución, ya que teníamos exactamente el mismo problema en Chrome / Windows.
Intentamos la solución de @stevenWatkins arriba, pero aún así tuvimos el "paso".
En vez de
Nosotros usamos:
Para nosotros esto hizo el truco 🎉
fuente
Agregar lo siguiente en el div que rodea el elemento en cuestión solucionó esto para mí.
Los bordes irregulares aparecían alrededor de la ventana de video en mi caso.
fuente
Para mí fue la propiedad de perspectiva de CSS lo que hizo el truco:
Completamente ilógico en mi caso, ya que no uso transiciones 3D, pero funciona de todos modos.
fuente
Para lienzo en Chrome (Versión 52)
Todas las respuestas enumeradas son sobre imágenes. Pero mi problema es sobre el lienzo en cromo (v.52) con transformación rotar. Se hicieron irregulares y todos estos métodos no pueden ayudar.
Solución que funciona para mí:
Tan importantes bloques de código:
Muestra: https://jsfiddle.net/tLbxgusx/1/
Nota: hay muchos divs anidados porque es una versión simplificada de mi proyecto.
Este problema también se reproduce para Firefox . No existe tal problema en Safari y FF con retina.
Y otra solución fundada es colocar el lienzo en un div del mismo tamaño y aplicar el siguiente CSS a este div:
Y la rotación debe aplicarse a esta envoltura div. La solución listada funciona pero con una pequeña modificación.
Y el ejemplo modificado para tal solución es: https://jsfiddle.net/tLbxgusx/2/
Nota: Vea el estilo de div con la clase 'tercera'.
fuente