使用Transform进行CSS居中

时间:2017-02-08 18:42:36

标签: css centering

为什么以变换为中心转换并保持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%);
 }

1 个答案:

答案 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;
&#13;
&#13;