为什么以变换为中心转换并保持50%中心完美(与位置相对父级)但不是正确的50%?
工作示例:
span[class^="icon"] {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
没有中心的示例:
span[class^="icon"] {
position: absolute;
top: 50%;
right: 50%;
transform: translate(-50%, -50%);
}
答案 0 :(得分:15)
因为translateX(-50%)
会将某些内容移回 left 50%(因为-
为负值),这意味着它与left: 50%;
成对并居中。
如果您想使用right: 50%;
,请将其与translateX(50%)
一起使用以居中。
* {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>
&#13;