如何在 CSS 中垂直定位 DIV 元素

Posted

技术标签:

【中文标题】如何在 CSS 中垂直定位 DIV 元素【英文标题】:How to Vertically Position DIV Elements in CSS 【发布时间】:2022-01-16 04:35:50 【问题描述】:

在 CSS 中定位我的内容时遇到问题。我想获取我的内容并垂直放置它。我尝试过使用 flexbox,但它没有用。我知道 flexbox 是什么以及它的属性,但它对我不起作用。这是 CSS 和 html 代码。

HTML:

<div class="main-div">
    <div class="container-1">
    
        <h2>What is Your Age In Days?</h2>
        <div class="flex-box-container-1">
            <div>
                <button class="btn btn-primary" onclick="ageInDays()">Click Me!</button>
            </div>
            <div>
                <button class="btn btn-danger" onclick="reset()">Try Again</button> 
            </div>
        </div>

        <div class="flex-box-container-1">
            <div id="flex-box-result"></div>
        </div>

    </div>


    <div class="container-2">
        <h2>Generator</h2>
        <button class="btn btn-success" id="picture-generator" onclick=pictureGenerator()>GENERATE</button>

        <div class="flex-box-container-2" id="picture-gen">
        </div>

    </div>
</div>

CSS:

body 
    background-image: url(Background.jpeg)



.container-1, .container-2 
    border: 1px solid;
    margin: 0 auto;
    text-align: center;
    width: 75%;


.flex-box-container-1, .flex-box-container-2 
    display: flex;
    padding: 10px;
    border: 1px solid black;    
    flex-wrap: wrap;
    flex-direction: row;
    justify-content: space-around;


.flex-box-container-1 div 
    padding: 10px;
    align-items: center;
    display: flex;


#flex-box-result 
    font-size: 32px;
    font-weight: bold;



#yikes 
    font-size: 32px;
    font-weight: bold;
    Animation-name: example;
    Animation-duration: 0.5s;
    animation-iteration-count: infinite;;


@keyframes example 
    10% color: red;
    15% color: yellow;
    20% color: blue;
    30% color: green;
    40% color: lightsalmon;
    50% color: lightsteelblue
    60% color: steelblue
    70% color: ivory
    80% color: purple
    90% color: pink
    100% color: magenta;
    



.flex-box-container-2 img 
    box-shadow: -12px 11px 28px 6px rgba(0,0,0,0.69);
    margin: 10px;

所以,我必须垂直对齐容器 1 和 2。我尝试使用 Justify ContentAlign Items 来做到这一点,但没有成功。我感谢每一点帮助。

【问题讨论】:

我不太清楚你的目标是什么。容器 1 和容器 2 是否彼此相邻?以及在什么意义上垂直对齐(中心对齐或顶部或..)。 容器 1 和 2 彼此相邻。我想将它们垂直居中。如果想看代码输出,这里是js小提琴链接:jsfiddle.net/y924rv7g 这能回答你的问题吗? Vertically center elements in a div 不,它没有。我试过使用 flexbox 和它的属性,但它们对我不起作用。 要对齐哪些元素?我了解您希望 container-1 和 container-2 彼此相邻,但是您希望它们各自内容的哪些位彼此对齐?标题和/或按钮? 【参考方案1】:

您可以使用flex-direction: column 垂直定位它。

【讨论】:

我的意思是垂直对齐它。我需要上下移动它。 您可以尝试将 Justify-Content 和 Align Items 设置为居中 是的,我试过了。它没有用。想自己看的话,可以看js fiddle上的代码,jsfiddle.net/y924rv7g【参考方案2】:

如果 Flex 不适合您,据我所知,还有另外两种方法。

第一个是在父元素上使用display: table; width: 100%;,在要垂直对齐的子元素上使用display: table-cell; vertical-align: middle;

第二个涉及在父元素上使用position: relative,在子元素上使用position: absolute; top: 50%; transform: translateY(-50%);

如果您想将 container-1container-2 居中,一个在另一个之上,您必须创建另一个 div 包装了这两个。在这种情况下,这将是您的子元素。

如果您希望两个容器彼此相邻,请使用引导程序的网格系统为它们提供适当的 col 类,并将这两个容器视为子容器。

在上述两种情况下,你的父元素都应该是.main-div

【讨论】:

非常感谢您的帮助,但我想坚持使用 flexbox。我更新了我的一些代码,你可以在这里看到它jsfiddle.net/21mL930y如果你找到解决方案请告诉我。

以上是关于如何在 CSS 中垂直定位 DIV 元素的主要内容,如果未能解决你的问题,请参考以下文章

CSS使容器相对父元素垂直水平居中定位(父容器及子元素大小不确定)

在 CSS 中垂直对齐和定位父 DIV

如何在没有绝对定位的情况下将主体元素内的 div 垂直和水平居中? [复制]

如何让div垂直居中(23种方法总结)

如何实现div内的span垂直的定位?

CSS实现垂直居中的7种方法