À l'aide de -webkit-transform: rotate(-5deg);
sur un div de conteneur, Chrome affiche la grille des images avec des bords très irréguliers. Alors que dans FF (-moz-transform:
) et IE (-ms-filter:
) tout semble aller pour le mieux - voir la différence ci-dessous.
Y a-t-il quelque chose que je puisse faire à ce sujet?
Vous pouvez consulter la réponse à la question Transformation CSS, bords dentelés en chrome
M'a aidé
De la réponse acceptée:
Au cas où quelqu'un chercherait ça plus tard, une bonne astuce pour se débarrasser. de ces bords dentelés sur les transformations CSS dans Chrome consiste à ajouter le Propriété CSS
-webkit-backface-visibility
avec la valeurhidden
. Dans mes propres tests, cela les a complètement lissées. Espérer que aide.
Il semble que ce soit un Antialiasing bug dans le moteur de webkit. Un rapport a été déposé mais n’a pas encore été résolu .
Vous pouvez essayer d'ajouter une bordure de la même couleur que votre arrière-plan pour essayer de minimiser l'effet.
-webkit-transform: rotate(-5deg) translate3d( 0, 0, 0);
Fait le truc pour le chrome.
Avez-vous essayé la règle CSS -webkit-transform-style: preserve-3d;
?
Vous pouvez également essayer de faire pivoter l'axe spécifique avec -webkit-transform: rotateZ(-5deg);
.
J'ai rencontré ce problème sur Chrome 33 (Windows 7). J'ai essayé tous les correctifs suggérés sur cette page. La misère s'ensuivit. Ma rotation était assez simple:
transform: rotate(40deg);
-moz-transform: rotate(40deg);
-webkit-transform: rotate(40deg);
J'ai trouvé ceci réponse et après quelques essais rapides, j'ai trouvé que la combinaison suivante fonctionnait parfaitement dans Chrome:
-webkit-backface-visibility: hidden;
outline: 1px solid transparent;
Je n'ai pas encore testé cross browser. Je ne sais pas quels autres bugs cela introduit. Tu étais prévenu. J'espère que cela pointe quelqu'un dans la bonne direction.
Note latérale: Au cours de mes expériences, j'ai constaté que -webkit-backface-visibility: hidden;
(seul) enlevait l'antialiasing des images non transformées.
Ceci est un bogue WebKit qui a déjà été corrigé et le correctif doit apparaître dans Chrome 15 .
La solution de contournement jusqu'à ce que tout le monde passe à 15+ consiste à appliquer -webkit-backface-visibility: hidden;
à l'élément en rotation. Travaillé pour moi Cela déclenche l'antialiasing sur l'élément.
Vous pouvez ajouter une zone d'ombre à vos images avec la même couleur que votre arrière-plan, réduisant ainsi l'effet.
Cela ne conviendra pas à toutes les utilisations, mais si vous avez le contrôle sur le balisage et que vous ajoutez un <div> supplémentaire, vous pouvez utiliser le contenu généré pour nettoyer de manière spectaculaire les bords des images pivotées dans Chrome. Cela fonctionne car Chrome [ appliquera un anti-aliasing au contenu généré placé sur l'image.
Vous pouvez voir un exemple ici: http://jsfiddle.net/cherryflavourpez/2SKQW/2/
La première image n'a rien à faire, la seconde a une bordure appliquée pour correspondre à la couleur de fond - pas n'importe quelle différence que je peux voir.
La troisième image div a du contenu généré avec une bordure placée autour du bord. Vous perdez un pixel autour de l’Edge, mais c’est beaucoup mieux. Le CSS est assez explicite. Cela a l'avantage de ne pas vous obliger à créer la frontière à votre image, ce qui me semble être un prix trop élevé.
Pour moi, c'est la propriété CSS en perspective qui a fait l'affaire:
-webkit-perspective: 1000;
Complètement illogique dans mon cas, car je n'utilise pas de transitions 3D, mais fonctionne néanmoins.