【发布时间】:2020-11-02 04:40:14
【问题描述】:
我的页面上有一个登录框,我想把它放在页面中间,所以我使用了:
.login {
width: 280px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
}
它奏效了。但是,我不确定为什么。根据我的理解,top and left 50% 把盒子的左上角放在中间,所以盒子本身的中心还没有在中心,但是在transform translate line之后,它把盒子放在中间,怎么做?
我认为 translate 只会将 50% x 轴和 50% y 轴平移回原始位置。
【问题讨论】:
-
通常原点是元素的左上角。转换将其移动到中心>我随机搜索的一个示例:medium.com/front-end-weekly/…
-
top: 50%; left: 50%;-- 50% 与容器的大小有关。transform: translate(-50%,-50%);-- 50% 是相对于元素本身的大小而言的。因此,您将其向右/向下移动 50% 的容器,然后向左/向上移动 50% 的元素,从而使其居中。如果元素比设备的屏幕大,这很容易失败,这很容易在移动设备上发生。 -
top和left由元素容器确定。transform属性是基于元素的,而不是由元素容器决定的。例如top 和 left 在容器内移动元素,transform 根据元素自身的宽度/高度/深度移动元素。
标签: html css twitter-bootstrap