将某些 div 元素居中,同时将另一个元素保持在底部

Posted

技术标签:

【中文标题】将某些 div 元素居中,同时将另一个元素保持在底部【英文标题】:Centering certain div elements while keeping another element at the bottom 【发布时间】:2021-11-10 01:49:34 【问题描述】:

我在一个 div 中有三个元素,它本身在另一个 div 中。我希望内部 div 的前两个元素相对于最外层 div 居中并相互堆叠,而第三个元素也应该相对于最外层 div 位于底部。这是一个 WordPress 项目,我是新手,所以我不想更改任何 div 或类结构,只需设置现有类的样式即可。我更喜欢仅使用 Flexbox 的解决方案。

这是html

<div class="outerDiv">
    <div class="innerDiv">
        <p class="e1"> Centered element 1 </p>
        <p class="e2"> Centered element 2 </p>
        <p> Bottom element </p>
    </div>
</div>

这是相关的 CSS:

.outerDiv
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    padding: 90px 0 0 0;
    box-sizing: border-box;


.innerDiv 
    align-self: center;
    margin: 30px 30px 30px 30px;


.e1 
  margin: 10px 0;


.e2
   margin: 10px 0;

【问题讨论】:

【参考方案1】:

欢迎来到 ***。我已对此进行了更新以满足您的新要求:

        .outerDiv 
    width: 100%;
    height: 600px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    text-align: center;


.innerDiv 
    width: 50%;
    height: 100%;


.e1 
    width: 100%;
    height: 25%;


.e2 
    width: 100%;
    height: 25%;


.e3 
    width: 50%;
    height: 25%;
    position: absolute;
    bottom: 0;

【讨论】:

这是迄今为止最接近的解决方案,但我将前两个元素彼此内联,而不是堆叠在一起(我应该澄清一下,我会在我的问题中编辑它) .然而更重要的是,垂直对齐让我将前两个元素放在顶部,第三个元素放在中间。我正在寻找前两个垂直居中,第三个元素在底部。【参考方案2】:

.innerDiv 
  /*...*/
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;


.e1 
  margin: 10px 0;
  margin-top: auto;


.e2
   margin: 10px 0;
   margin-bottom: auto;

编辑:.innerDiv添加了宽度/高度属性

【讨论】:

以上是关于将某些 div 元素居中,同时将另一个元素保持在底部的主要内容,如果未能解决你的问题,请参考以下文章

将具有子元素(包含 imgs/iframes)的元素绝对居中,同时在调整大小时保持它们的纵横比

元素不会保持居中,尤其是在调整屏幕大小时

当父元素和子元素都具有不同的百分比宽度时如何使子 div 居中

如何在容器中居中元素,同时保持它们垂直对齐?

在 div 内裁剪居中的图像

CSS:如何将列表元素与左对齐文本居中对齐?