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%);
}
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>