当前位置: 首页 > 面试题库 >

等高列在flexbox中居中

雷锋
2023-03-14
问题内容

我想有两列等高,它们的内容应该居中对齐,因此在每个div的正中间。

问题: “等高”和“中间对齐”似乎将自己排除在外,一个与另一个不兼容。

问题: 如何创建一个具有两列的行,这两列具有不同的宽度,相同的高度,并且其内容居中于每一列的中间?

<!-- 'middle aligned' and 'equal height' don't like each other ? -->
<div class="ui equal height center aligned grid">
    <div class="row">
        <div class="twelve wide purple column">
        <p>Text Text Text</p>
        <p>Text Text Text</p>
        <p>Text Text Text</p>
        <p>Text Text Text</p>
        </div>
        <div class="four wide red column  middle aligned">
            <div class="row">Forward</div>

        </div>
    </div>
</div>

http://jsfiddle.net/kjjd66zk/1/


问题答案:

此布局的关键是将相等的高度应用于主伸缩容器。

然后,将flex项目嵌套在flex容器中,以使flex项目的内容居中。

因此,顶层创建相等的高度。第二级进行居中。

(有关更多详细信息,请参阅底部的注释。)

这是一个基于您的代码结构的示例:

body {

    height: 300px;             /* for demo purposes */

    color: white;

}



flex-container {

    display: flex;             /* primary flex container */

    flex-direction: row;       /* horizontal alignment of flex items

                                      (default value; can be omitted) */

    align-items: stretch;      /* will apply equal heights to flex items

                                      (default value; can be omitted) */

    height: 100%;

}



flex-item {

    display: flex;             /* nested flex container */

    flex-direction: column;    /* vertical alignment of flex items */

    justify-content: center;   /* center flex items vertically */

    align-items: center;       /* center flex items horizontally */

}



flex-item:first-child {

    flex: 3;                   /* consume 3x more free space than sibling */

    background-color: #a333c8;

}



flex-item:last-child {

    flex: 1;

    background-color: #db2828;

}


<flex-container>

    <flex-item><!-- also flex container -->

        <p>Text Text Text</p>

        <p>Text Text Text</p>

        <p>Text Text Text</p>

        <p>Text Text Text</p>

    </flex-item>

    <flex-item><!-- also flex container -->

        <div>Forward</div>

    </flex-item>

</flex-container>

人们有时将弹性项目及其内容视为一个要素。这是不正确的。

flex容器的HTML结构具有三个级别:

  • 容器
  • 该项目
  • 内容

因此,项目内部的内容不代表该项目;它代表一个单独的元素。

如果项目内的内容是文本,则它将成为匿名元素。

从flexbox规范:

4.弹性项目

flex容器的每个流入子元素都将成为一个flex项目,而直接包含在flex容器内的每个连续文本都将包裹在一个匿名flex项目中。

这就是为什么在上面的解决方案中,flex项变为flex容器。它允许在flex项目(内容)的子项上使用flex属性。



 类似资料:
  • 问题内容: 我有一个简单的2列布局,我想使用Flexbox获得相等的高度: 的HTML 的CSS 这适用于Firefox,但不适用于Chrome: 我尝试了一些方法(包括供应商前缀),但仍然无法正常工作。 问题答案: 要使用Flexbox创建两个相等的列: 父容器得到 每列都是由div创建的,它们可以增长/收缩 拉伸第一列的子级: 还提供了第一列,以便其子元素具有柔韧性并可以成长 旁边的孩子被给予

  • 问题内容: 我要在布局中对齐三个元素。 首先,我有一个div来提供反馈,然后是一个搜索输入,然后是一个div元素来提供建议。 我希望第一个和最后一个元素的宽度为20%,搜索输入的宽度为60%。使用Flexbox可以实现我想要的。 但是有一个功能可以将所有div增长到最高元素 。这意味着当搜索结果弹出时,反馈和建议元素的高度会随着搜索div的增加而增加,从而导致布局混乱。 有没有技巧可以不增加具有最

  • 问题内容: 如何使用flexbox在容器内水平和垂直居中div。在下面的示例中,我希望每个数字都彼此相邻(按行),并水平居中。 问题答案: 我认为您想要以下内容。 你的元素应该是块级(而非)如果你想要的高度和顶部/底部填充,以正常工作。 另外,在上,将宽度设置为而不是。 您的属性很好。 如果您希望垂直居中于视口中,请为和分配100%的高度,然后将页边距清零。 请注意,需要一个高度才能看到垂直对齐效

  • 如何使用FlexBox在容器内水平和垂直地居中div。在下面的例子中,我希望每一个数字在彼此下面(在行中),水平居中。 null null http://codepen.io/anon/pen/zlxbo

  • 问题内容: 我的布局有一个容器flex-container和一个孩子。 HTML: 容器和孩子的身高未知。目标是: 如果孩子的身高低于容器,则其水平和垂直居中。 如果孩子的身高大于容器,则它会调整到顶部和底部,我们可以滚动。 方案: 在此处输入图片说明 使用flexbox将元素居中的最快方法是: 但是,如果容器的子代具有更高的高度,则该子代将无法 正确显示。子项显示为割伤(仅顶部)。 问题答案:

  • 问题内容: 我想有A B和C中间对齐。 我如何才能D完全右移? 问题答案: 以下是实现此布局的五个选项: CSS定位 带有不可见DOM元素的Flexbox 带有不可见伪元素的Flexbox Flexbox与 flex: 1 CSS网格布局 方法1:CSS定位属性 应用于容器。 应用于项目D。 现在,此项目已完全放置在flex容器中。 更具体地说,项目D从文档流中删除,但停留在最接近的祖先的范围内。