【问题标题】:Grow flex columns in height but keep width fixed增加弹性列的高度但保持宽度固定
【发布时间】:2020-10-14 03:26:06
【问题描述】:

我有两列分别占据页面宽度的 70% 和 30%。我希望它们随着更多元素的添加(并垂直包装)而垂直增长。

但我不能让它像下面这样使用flex。如果一列增长,而另一列保持不变,增长的列会压倒较小的列并将其推入另一行。

有什么建议吗?

.column {
  display: flex;
  padding: 10px;
}

.left_column {
  flex: 1 1 70%;
}

.right_column {
  flex: 1 1 30%;
}
<div class="row">
  <div class="column left_column" style="background-color:#aaa;">
    <div>
      <button class="button b1"></button>
      <button class="button b1"></button>
      <button class="button b1"></button>
      <button class="button b1"></button>
      <button class="button b1"></button>
      <button class="button b1"></button>
      <button class="button b1"></button>
      <button class="button b1"></button>
      <button class="button b1"></button>
      <button class="button b1"></button>
      <button class="button b1"></button>
      <button class="button b1"></button>
    </div>
  </div>
  <div class="column right_column" style="background-color:#bbb;">
    <h2>Column 2</h2>
    <p>Some text..</p>
  </div>
</div>

【问题讨论】:

  • 您唯一的错误是将 display flex 添加到 .row。无需使用大众单位

标签: html css flexbox


【解决方案1】:

如果我理解正确,这应该会对你有所帮助。

body{
  margin:0;
}

.row{
  display:flex;
}

.left_column{
  width:70vw;
}

.right_column{
  width:30vw;
}
<div class="row">
        <div class="column left_column" style="background-color:#aaa;">
          <div>
            <button class="button b1"></button>
            <button class="button b1"></button>
            <button class="button b1"></button>
            <button class="button b1"></button>
            <button class="button b1"></button>
            <button class="button b1"></button>
            <button class="button b1"></button>
            <button class="button b1"></button>
            <button class="button b1"></button>
            <button class="button b1"></button>
            <button class="button b1"></button>
            <button class="button b1"></button>
          </div>
        </div>
        <div class="column right_column" style="background-color:#bbb;">
          <h2>Column 2</h2>
          <p>Some text..Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
        </div>
      </div>

【讨论】:

  • 谢谢。 70vw70% 有什么区别?
  • 哦,不好意思,忘了说。 vw 和 vh 是 CSS 中的响应值,它们的意思是“视点宽度和视点高度。它就像您的窗口/屏幕大小的百分比值。例如,当您的窗口当前为 800px 宽时,100vw 将具有与 800px 和 50vw 相同的值会有一个 400px 的值。它是一个绝对值,非常适合对齐。但是当你在另一个元素中使用行和列时,你应该使用百分比,因为它使用给定空间的百分比
【解决方案2】:

首先,你的 CSS 应该是

`.row {
  display: flex;
  padding: 10px; 
}

.left_column {
  flex: 1 1 70%;
}

.right_column {
  flex: 1 1 30%;
}`

因为您的外部容器是“行”类。之后,您还可以将“display: flex”添加到列(此处添加到 left_column 和 right_column 类。)。我推荐阅读这篇实用的flexbox guide by CSSTricks

【讨论】:

  • 谢谢。如果我可以跟进另一个问题:如何使两列独立增长?上面的 CSS(来自 Raqha)使两列都增长到相同的高度(最高列)。如果我希望它们根据自己的元素数量增长怎么办?
  • 你可以为你的css试试这个。还可以添加更多按钮和文本以查看更改。:.row { display: flex; padding: 10px; } .left_column { flex: 1 1 70%; display: flex; } .right_column { flex: 1 1 30%; display: flex; flex-direction: column; }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多