Texte flou après l'utilisation de CSS transform: scale(); dans Chrome
Semble qu'il y a eu une mise à jour récente de Google Chrome qui provoque texte flou, après avoir fait un transform: scale()
. Plus précisément je suis en train de faire ceci:
@-webkit-keyframes bounceIn {
0% {
opacity: 0;
-webkit-transform: scale(.3);
}
50% {
opacity: 1;
-webkit-transform: scale(1.05);
}
70% {
-webkit-transform: scale(.9);
}
100% {
-webkit-transform: scale(1);
}
}
Si vous visitez http://rourkery.com dans google Chrome, vous devriez voir le problème sur la zone de texte principale. Il n'a pas l'habitude de le faire et il ne semble pas pour effet d'autres navigateurs webkit (Safari). Il y avait d'autres articles sur les personnes confrontées à un problème similaire avec les transformations 3d, mais ne peut pas trouver quelque chose sur les transformations 2d comme ça.
Des idées serait apprécié, merci!
- Venez de visiter le site à l'aide de Firefox et IE 10, de ne pas voir le problème. S'il est limité à google Chrome, vous devrez peut-être attendre pour Google de corriger eux-mêmes.
- Je ne vois pas flou...je suis sur Chrome v25/PC
- J'ai rencontré ce problème plus tôt, aussi, comme Nolonar mentionné, nous allons devoir attendre que Google pour le fixer.
- Pas une solution, mais j'ai remarqué que le problème se produit uniquement pour moi, lorsque j'utilise le CSS optimizeLegibility.
- Le lien est cassé.
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce problème un certain nombre de fois et il semble y avoir 2 façons de le fixer (voir ci-dessous). Vous pouvez utiliser l'une de ces propriétés pour résoudre le rendu, ou les deux en même temps.
Backface visibilité caché résout le problème car il simplifie l'animation juste à l'avant de l'objet, alors que l'état par défaut est l'avant et l'arrière.
TranslateZ travaille aussi que c'est un hack pour ajouter de l'accélération matérielle pour l'animation.
Ces deux propriétés résoudre le problème que vous rencontrez, mais certaines personnes aiment aussi ajouter
pour leur animation de l'objet. Je trouve qu'il peut modifier le rendu d'une police web mais n'hésitez pas à essayer cette méthode de trop.
backface-visibility: hidden;
assurez-vous travaillé dans mon cas, dans la résolution de certains bizarre flou de mouvement causé par l'opacité de la transition, qui est. L'étrange mouvement est maintenant disparu, MAIS elle a fait les textes dans mon div définitivement brouillé au lieu.perspective(1px)
à votretransform:
code, cela a fonctionné pour moi dans google Chrome, alors que rien d'autre n'a résolu le problèmescale()
etbackface-visibility: hidden;
fixe--de texte flou n'est pas la seule chose étrange qui se passe. J'ai vécu ces bugs dans Chrome navigateurs.backface-visibility: hidden;
sur l'élément qui a sauté, il a été résolu. Utilisé chrome 77.0.3865.90 sur Windows.Pour améliorer l'effet de flou, de l'esp. dans Chrome, essayez de faire cela:
Mise à JOUR: Point de vue ajoute la distance entre l'utilisateur et le z-plane, qui, techniquement, les échelles de l'objet, ce qui le flou semble "permanent". Le
perspective(1px)
ci-dessus, c'est comme duck-tape parce que nous sommes correspondant à l'effet de flou que nous essayons de résoudre. Vous pourriez avoir plus de chance avec le css ci-dessous:perspective(1px)
de la propriété et de voir si cela fonctionne mieux.J'ai trouvé que le réglage de l'échelle de ratio a aidé un peu.
À l'aide de
scale(1.048)
sur(1.05)
semblait générer une meilleure approximation d'un ensemble de pixels de taille de police, la réduction de la sous-pixel est flou.J'ai aussi utilisé
translateZ(0)
qui semble régler Chrome finale de l'arrondissement étape dans la transformation de l'animation. C'est un plus pour mon onhover d'utilisation, car il augmente la vitesse et réduit le bruit visuel. Pour une fonction onclick cependant, je ne voudrais pas l'utiliser parce que, la transformée de police ne semble pas être aussi croustillant.translateZ(0)
, changé juste1.05
à1.048
Au lieu de
à l'aide de
corrige le texte flou problème dans Chrome.
transform: scale({scaleVal});
, vous devez positionner vos élémentsleft
/top
en conséquence qui est un simple calcul basé sur{scaleVal}
Après avoir essayé tout le reste ici avec pas de chance, ce qui a finalement résolu ce problème pour moi a été retrait la
will-change: transform;
de la propriété. Pour une raison quelconque, il a causé terriblement floue à la recherche de mise à l'échelle dans Chrome, mais pas Firefox.Ce doit être un bug avec Chrome (Version 56.0.2924.87), mais le suivant corrige le flou pour moi lors de la modification des propriétés css dans la console('.0'). Je vais le signaler.
Sunderls me conduire à la réponse. Sauf
filter: scale
n'existe pas, maisfilter: blur
n'.Appliquer les prochaines déclarations, les éléments qui apparaissent floues (dans mon cas, ils étaient à l'intérieur de la transformation de l'élément):
Il presque a parfaitement fonctionné. "Presque" parce que je suis en utilisant une transition et en transition, les éléments ne regardez pas parfait, mais une fois que le passage est fait, ils le font.
-webkit-filter: blur(0);
seul qui fonctionne pour moi.backface-visibility: hidden;
brouille mon élément quand je reset la mise à l'échelle par la suite.blur(0px);
il ne marche pas le fixer. mais si je neblur(1px);
puis appuyez sur la flèche vers le bas pourblur(0px);
il n'a pas l'air correct. Allé sur l'actualisation de la page / peu importe ce que j'écris dans le CSSJ'ai découvert que le problème se passe sur les transformations relatives quelque sorte. translateX(50%), l'échelle(1.1) ou ce que jamais. fournir des valeurs absolues fonctionne toujours (ne produit pas de texte flou(ures)).
Aucune des solutions mentionne ici travaillé, et je pense qu'il n'y a pas de solution, mais (à l'aide de Chrome 62.0.3202.94 alors que j'écris).
Dans mon cas
transform: translateY(-50%) translateX(-50%)
causes de flou (je veux le centre d'une boîte de dialogue).Pour atteindre un peu plus "absolue" des valeurs, j'ai dû mettre les valeurs décimales à
transform: translateY(-50.09%) translateX(-50.09%)
.NOTE
Je suis tout à fait sûr, que ces valeurs varient sur différentes tailles d'écran. Je voulais juste partager mes expériences, dans le cas où il aide quelqu'un.
display:table
rendre le travail pour moiEssayez d'utiliser
zoom: 101%;
pour des modèles complexes lorsque vous ne pouvez pas utiliser une combinaison de zoom + de l'échelle.zoom
n'est pas définie par un standard du web et n'est pas pris en charge par firefox caniuse.com/#feat=css-zoomDans mon cas suivants du code causé floue police:
et ajouter simplement la propriété zoom fixe pour moi. Jouer avec le zoom, à la suite fonctionné pour moi:
zoom
Une autre solution pour l'essayer, je viens de trouver floues transforme (translate3d, scaleX) sur Chrome est de définir l'élément
"display: inline-table;".
Elle semble pixel arrondi dans certains cas (sur l'axe des X).
J'ai lu positionnement au pixel près sous Chrome a été prévu et les devs ne répare pas.
Ajoutant
perspective(1px)
a fonctionné pour moi.à
J'ai trouvé beaucoup mieux et propre solution:
ou
Grâce à ce post:
La prévention floue rendu avec transform: scale
Aucun des ci-dessus a fonctionné pour moi.
Il a travaillé quand j'ai ajouté la perspective
c'est à dire de
transform : translate3d(-10px,-20px,0) scale3d(0.7,0.7, 1)
j'ai changé pour
transform : perspective(1px) translate3d(-10px,-20px,0) scale3d(0.7,0.7, 1)
perspective(1px)
effectivement fait qu'empirer les choses pour moi 🙁Je fixe mon cas, en ajoutant:
scale()
transformer résultatPOUR CHORME:
J'ai essayé toutes les suggestions ici. Mais diden pas de travail.
Mon collège trouvé une excellente solution, qui fonctionne mieux:
Vous ne devriez PAS l'échelle passé 1.0
Et comprennent
translateZ(0)
en vol stationnaire, mais PAS dans le néant-hover/en position initiale.Exemple:
J'ai utilisé une combinaison de toutes les réponses et c'est ce qui a fonctionné pour moi à la fin:
Pour moi le problème c'est que mes éléments ont été à l'aide de
transformStyle: preserve-3d
. J'ai réalisé que ce n'était pas réellement nécessaire pour l'application et le retrait, il a fixé le degré de flou.Aucun des ci-dessus a fonctionné pour moi.
J'ai eu cette animation pour les popups:
Dans mon cas, effet de flou a disparu après l'application de cette règle:
-webkit-perspective: 1000;
même s'il est marqué comme utilisé dans Chrome inspecteur.J'ai enlevé ce à partir de mon code -
transform-style: preserve-3d;
et ajouté ce-
transform: perspective(1px) translateZ(0);
le flou s'en alla!
En Chrome 74.0.3729.169, en cours de 5-25-19, il ne semble pas être un correctif pour le flou, survenant sur certains navigateur niveaux de zoom causée par la transformation. Même un simple
TransformY(50px)
sera flou de l'élément. Cela ne se produit pas dans les versions actuelles de Firefox, Edge ou Safari, et il ne semble pas se produire à tous les niveaux de zoom.top: 0, bottom: 0, left: 0; right: 0; margin: auto
mais alors le conteneur va prendre tout l'espace, il peut (il doit être de la largeur), ce qui ne fonctionne pas dans le cas où le contenu doit décider comment grand récipient sera.2019 mise à Jour
Le Chrome bug d'affichage n'est toujours pas fixées, et bien que pas de la faute des patrons, aucun des suggestions offertes dans l'ensemble de ce site web, vous aider à résoudre le problème. Je peux d'accord pour dire que j'ai essayé à chaque un seul d'entre eux en vain: seulement 1 vient de fermer et c'est la règle css: filter:blur(0); ce qui élimine le déplacement d'un conteneur par 1px mais ne permet pas de résoudre les troubles de la bogue d'affichage du conteneur lui-même et de tout contenu qu'il peut avoir.
Voici la réalité: il n'est littéralement pas de solution à ce problème, voici donc un travail autour de liquide de sites web
CAS
Je suis actuellement à l'élaboration d'un fluide d'un site web et l'3 divs, tous centrés avec des effets de survol et de partage des valeurs en pourcentage de la largeur et de position. Le Chrome bug se produit sur le centre de conteneur qui est à gauche:50%; et transformer:translateX(-50%); un paramètre commun.
EXEMPLE: d'Abord le HTML...
Voici le CSS où le Chrome bug se produit...
Voici le fixe css...
Buggé violon: https://jsfiddle.net/m9bgrunx/2/
Fixe violon: https://jsfiddle.net/uoc6e2dm/2/
Comme vous pouvez le voir une petite quantité de peaufinage de la CSS à réduire ou à éliminer l'obligation d'utiliser la transformation pour le positionnement. Cela pourrait également s'appliquer à une largeur fixe de sites web ainsi que de liquide.
vous pouvez utiliser les css
filter
pour résoudre ce problème.sur le vendeur-préfixe, merci de le faire par vous-même.
-webkit-filter
,-ms-filter
.le détail est ici
http://browser.colla.me/show/css_transformation_scale_cause_blurring
filter: scale
selon developer.mozilla.org/en/docs/Web/CSS/filterLe texte ne sera pas floue si vous n'avez pas
transition
latransform
.Viens de le faire:
Sans la transition
transition: all .2s;
Il est important d'ajouter que cette question se pose de savoir si l'élément qui est en cours de traduction a une hauteur avec un nombre impair de pixels. Donc, si vous avez le contrôle sur la hauteur de l'élément, la valeur d'un même numéro de rendre le contenu s'affichent