如何将 top a div 现在与位置 top 50% 和 translateY(-50%) 对齐

How to align top a div now with position top 50% and translateY(-50%)

很久以前,我从 Josh Crozier 的 this answer 中复制并粘贴了方法 1,使 div 垂直和水平居中:

 .container {
        width:100%;
        position: absolute;
        top: 50%;
        left: 50%;
        -moz-transform: translateX(-50%) translateY(-50%);
        -webkit-transform: translateX(-50%) translateY(-50%);
        transform: translateX(-50%) translateY(-50%);
    }

结果见左下图。但现在我需要 div 来对齐顶部,而不是 center/middle。我尝试了对 css 的 4 种不同更改(见图):

  1. top: 50% 更改为 top: 0。结果:div 的前 50% 不在屏幕上;
  2. 删除所有变换,将top: 50%改为top: 0。结果:div 的 50% 在右边的屏幕外;
  3. top: 50% 更改为 top: 43%。结果:div 顶部对齐;
  4. 删除所有变换,将top: 50%改为top: 43%。结果:div 的 75% 消失在右下方。

我很高兴 3) 成功了。但我不知道为什么 43% 是神奇的数字。也许 不完全是 。我通过反复试验,加载和重新加载到达了它。有更好的方法吗?

之所以如此,是因为您正在使用 translateY 属性 更改对象的坐标。如果删除所有 translateY 属性或将它们设置为 0,如下所示:translateY (0); 并添加 top:0; 它将对齐到 window.

的顶部

您可以在此处详细了解翻译的工作原理:https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/translate

您的 css 应该是这样的:

.container {
        position: absolute;
        top: 0;
        left: 50%;
        -moz-transform: translateX(-50%);
        -webkit-transform: translateX(-50%);
        transform: translateX(-50%);
    }