web-dev-qa-db-fra.com

Centrage CSS avec Transform

pourquoi le centrage avec transformation se traduit-il et laisse-t-il parfaitement le centre à 50% (avec la position relative du parent) mais pas à droite à 50%?

Exemple de travail:

span[class^="icon"] {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
 }

Exemple qui ne se centre pas:

span[class^="icon"] {
  position: absolute;
  top: 50%;
  right: 50%;
  transform: translate(-50%, -50%);
 }
15
norkuy

Parce que translateX(-50%) remet quelque chose vers le gauche 50% (à cause de la valeur négative de -), Ce qui signifie qu'il se couple avec left: 50%; Pour centrer quelque chose.

Si vous souhaitez utiliser right: 50%;, Utilisez-le avec translateX(50%) pour centrer.

* {margin:0;}
span {
  position: absolute;
  top: 50%; right: 50%;
  transform: translate(50%,-50%);
  background: black;
  color: white;
}

body:after, body:before {
  content: '';
  position: absolute;
  background: red;
}

body:after {
  top: 50%;
  left: 0; right: 0;
  height: 1px;
}
body:before {
  left: 50%;
  top: 0; bottom: 0;
  width: 1px;
}
<span>center me</span>
19
Michael Coker