EDIT 2016-07-04 (Étant donné que cette question devient populaire): Il s'agit d'un bogue dans Chrome . Les développeurs sont travaillent activement sur un correctif .
EDIT 2017-05-14 Le bug semble être corrigé, le correctif sera introduit dans Chrome 6
EDIT 2018-05-04 Un correctif a été fusionné, mais le bogue semble toujours être présent .
J'ai donc cette fenêtre très moche qui est centrée sur l'écran par ce CSS:
.popup
{
position: fixed;
top: 0;
bottom: 0;
transform: translate(-50%, -50%);
}
Cependant, cela ressemble à ceci sur Chrome (la police a l'air vraiment floue):
Mais comme ça sur Firefox:
Lorsque je supprime la règle transform
, le texte semble à nouveau agréable et croustillant, mais il n'est plus correctement centré.
Quand je vais à chrome://flags
et exécutez #disable-direct-write
c'est plus joli, mais les utilisateurs ne le feront évidemment pas et cela ne résout pas le problème.
Comment puis-je rendre ma police belle tout en ayant la fenêtre centrée?
Ma chrome est 44.0.2403.155
J'ai un three.js
démo utilisant WebGL qui s'affiche sur un canevas d'arrière-plan. Lorsque je désactive la démo, le problème ne se produit plus.
Problème dans la moitié du pixel.
Essayez: transform: translate(-50%, -51%);
Ça va marcher!
Une suggestion de la discussion connexe a résolu le problème pour moi: https://stackoverflow.com/a/46117022/7375996
L'utilisation de calc avec un certain décalage a résolu le problème dans mon cas:
transform: translate(calc(-50% + 0.5px), calc(-50% + 0.5px));
J'ai découvert que -webkit-filter: blur(0)
pouvait corriger votre police floue dans Chrome sous Windows:
#projectPopup {
...
-webkit-filter: blur(0);
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
Utilisez une normalisation de la transformation après votre animation:
Transformer la normalisation X/Y
Ou Nous redimensionnons la texture avec un zoom double, puis redimensionnons à nouveau. Dans certains cas, cela ne peut pas être appliqué en raison d'autres transformations ou traductions complexes, et n'est pas parfait.
...{
zoom:2;
-webkit-transform: scale(0.5);
transform: scale(0.5);
}
J'ai essayé différentes solutions dans différentes combinaisons, parfois effrayantes:
translate3d
Au lieu de translateY
zoom:2; transform: scale(0.5);
ou zoom:0.5; transform: scale(2);
transform: translate(calc(-50% + 0.5px), calc(-50% + 0.5px));
-webkit-filter: blur(0);
perspective: 1000px
scale(1.0, 1.0)
-webkit-font-smoothing: subpixel-antialiased;
aucun d'entre eux ne travaille en juillet 2019.
La seule solution que j'ai trouvée pour les modaux, qui devrait être centrée - pour utiliser un alignement flexbox au lieu de transformer: translate.
.modal__container {
display: flex;
justify-content: center;
align-items: center;
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: rgba(0, 0, 0, 0.5);
}
.modal {
box-sizing: border-box;
max-width: 80%;
max-height: 80%;
padding: 20px;
overflow-y: auto;
background: #fff;
}
<div class="modal__container">
<div class="modal">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
</div>
2019-04-15, qui m'arrive toujours dans Chrome. Trouvé que le changement position: fixed
à absolute
l'a corrigé:
.popup
{
position: absolute; <-- just like that
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
L'utilisation absolue peut ou non convenir à votre cas particulier, juste mes 2 cents.
La hauteur des éléments doit être un nombre pair https://prnt.sc/mtxxa2