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

Chrome中等高的Flexbox列

松正阳
2023-03-14
问题内容

我有一个简单的2列布局,我想使用Flexbox获得相等的高度:

的HTML

<div class="row flex">
    <!-- menu -->
    <div class="col-xs-4">
        <aside>
            Menu goes here
        </aside>    
    </div>
    <!-- content -->
    <div class="col-xs-8">
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam ac elementum justo. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Phasellus nec elementum erat. Suspendisse consequat ut metus ut cursus. Aenean et lectus id libero venenatis varius. Vivamus luctus ligula sit amet faucibus vulputate. Vestibulum tincidunt fringilla mauris, a vulputate magna egestas nec. Vivamus a odio ut nibh viverra fermentum.</p>
    </div>
</div>

的CSS

body { color: red; }
.flex { display: flex; }
aside { background: #000; height: 100%; }

这适用于Firefox,但不适用于Chrome:

我尝试了一些方法(包括供应商前缀),但仍然无法正常工作。


问题答案:

要使用Flexbox创建两个相等的列:

  • 父容器得到 display: flex

  • 每列都是由div创建的,它们可以flex: 1增长/收缩

拉伸第一列的子级:

  • 还提供了第一列,display: flex以便其子元素具有柔韧性并可以成长

  • 旁边的孩子被给予flex: 1并会成长/收缩

这是您可能需要的最简单的Flexbox指南。

Flexbox兼容性: IE11 +和所有现代浏览器。

使用Bootstrap
:这是您的评论中的小提琴,添加了我的更改。左侧的1px间距已被删除div.flex.row:before, div.flex.row:after { display: none }

相关答案:在Chrome中使用display:flex时,请消除1px的间隙

在此示例中,我删除了所有不必要的类。当前,两个列的高度都由最高的列确定。您还可以在height: 100vhflex容器中将列填充到页面的整个高度中-
在此处了解有关视口单位的更多信息。

视口单位兼容性: 几乎
完全支持
视口单位
__。

要为列提供更大的宽度,请为它提供更大的弯曲值。我将本例中的第二列更改为flex: 3,它将更宽。

body {

  color: red;

  margin: 0;

}

.flex {

  display: flex;

  /*Should the columns span the entire height of the page? Use:

  height: 100vh;*/

}

.column {

  flex: 1;

}

.column:first-child {

  display: flex;

}

.column:last-of-type {

  background: #000;

  flex: 3;

}

aside {

  flex: 1;

  background: #F90;

}


<div class="flex">

  <!-- menu -->

  <div class="column">

    <aside>

      Menu goes here

    </aside>

  </div>

  <!-- content -->

  <div class="column">

    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam ac elementum justo. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Phasellus nec elementum erat. Suspendisse consequat ut metus ut cursus.

      Aenean et lectus id libero venenatis varius. Vivamus luctus ligula sit amet faucibus vulputate. Vestibulum tincidunt fringilla mauris, a vulputate magna egestas nec. Vivamus a odio ut nibh viverra fermentum.</p>

    <p>Nulla facilisi. Pellentesque nec libero leo. Duis porta ut neque vulputate blandit. In vel quam eu eros finibus feugiat ut in nulla. Morbi congue, tellus commodo euismod pulvinar, lacus dui fringilla lectus, in tempus mi nulla semper ex. Integer feugiat,

      lectus a facilisis rutrum, ex magna tincidunt ligula, in suscipit turpis lorem quis neque. Suspendisse dictum, nulla at aliquet cursus, magna tellus mattis purus, nec volutpat mauris nunc non neque. Mauris pretium mauris sed eros interdum lobortis.

      Aenean id vestibulum nisl. Praesent sit amet tempor nulla, consequat viverra ante. Maecenas eu pretium lacus, a consectetur sem. Proin viverra eget turpis eu condimentum. Donec et egestas enim. Maecenas fermentum auctor ligula, nec fringilla mi.

      Quisque hendrerit purus eget urna semper sodales.</p>



  </div>

</div>


 类似资料:
  • 问题内容: 我想有两列等高,它们的内容应该居中对齐,因此在每个div的正中间。 问题: “等高”和“中间对齐”似乎将自己排除在外,一个与另一个不兼容。 问题: 如何创建一个具有两列的行,这两列具有不同的宽度,相同的高度,并且其内容居中于每一列的中间? http://jsfiddle.net/kjjd66zk/1/ 问题答案: 此布局的关键是将相等的高度应用于主伸缩容器。 然后,将flex项目嵌套在

  • 问题内容: 对于任何CSS专家来说,我都有一个棘手的问题。我的绿色div的高度灵活,可以容纳剩余的高度。现在我想在该div中放置一个div,该div应该是绿色div的一半。但似乎Chrome是否将其视为整个页面的一半而不是flex项目。 HTML CSS 问题答案: 您可以绝对定位。 关于您的声明: 但似乎Chrome是否将其视为整个页面的一半而不是flex项目。 您给了。然后给它的孩子()一个。

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

  • 在另一个flex容器内的Flexbox列容器在Chrome中没有得到100%的高度,但在Firefox和Edge中都可以。 Codepen示例

  • 我对Google Chrome、flexbox和overflow有一个奇怪的问题。 当容器处于flexbox模式时,子容器开始水平溢出(比如通过javascript更改内容的宽度),滚动条会出现,但无法操作。 强制浏览器重新绘制(例如,通过调整大小)将使滚动条再次正常工作。 下面是一个例子:http://jsfiddle.net/w8rtk2de/3/ 在谷歌浏览器中 如果有人能快速解决这个问题,

  • 问题内容: 我正在尝试编写一个分为三部分的搜索菜单。如果没有足够的垂直空间显示结果,则每个部分都会有一个滚动条。 在Chrome和Firefox中,每个菜单都显示其滚动条,但是在IE11上,菜单与包装器重叠。 我已经编写了一个可在Chrome和Firefox上运行的示例(Firefox很棘手,我需要添加多个菜单级别)。 我在IE 11上缺少什么吗? 问题答案: 要在Chrome,Safari,Fi