html - 如何将 div 与 flex 对齐

标签 html css flexbox

有一个 3 列的布局,当在移动设备上时,希望第 3 列低于第 2 列,并且不低于第 1 列的高度。第 2 列的高度可变,可以小于照片。

我的布局是这样的。

  .container {
  display: flex;
}

.left {
  flex: 0 0 150px;
}

.middle {
  flex: 1;
}

.right {
  flex: 0 0 225px;
}

@media (max-width: 768px) {
  .right {
    flex: 1 100%;
    padding-left: 150px;
  }
}
<div class="container">
  <div class="left">a</div>
  <div class="middle">b</div>
  <div class="right">c</div>
</div>

padding-left 将 .right 定位在 .middle 下方,但低于 .left 容器的底部。我想获取屏幕截图中的第二个 secnario,以便在小型设备上右侧列位于中间列的正下方

enter image description here

最佳答案

简单地包裹middleright,使wrapper成为一个flex容器,然后,在较窄的屏幕上,改变它的 flex-directioncolumn

此外,在较窄的屏幕上,我们需要将container设置为align-items: flex-start,所以left/wrapper 高度基于其内容。

堆栈片段

.container, .wrapper {
  display: flex;
}

.left {
  flex: 0 0 150px;
}

.middle, .right {
  flex: 1;
}

.wrapper {
  flex: 0 0 225px;
}

@media (max-width: 768px) {
  .container {
    align-items: flex-start;
  }
  .wrapper { 
    flex-direction: column;
  }
}

.left, .middle, .right {
  border: 1px solid gray;
}
<div class="container">
  <div class="left">a</div>
  <div class="wrapper">
    <div class="middle">b, made this higher<br>to show how it wraps</div>
    <div class="right">c</div>
  </div>
</div>

关于html - 如何将 div 与 flex 对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47034728/

相关文章:

javascript - 浏览器在呈现数据以创建表格时无响应

html - 如何在不移动元素的情况下为 div 提供边距?

javascript - 通过选中单选按钮更改链接

html - 表单中的按钮定位问题

html - 使用 Bootstrap 类或自己的类来自定义 css?

javascript - jQuery 中的 Asset.css

html - 当我在 Chrome 上增加窗口大小时, flex 元素的大小发生了变化

html - XPath:你如何在 xpath 中进行小写调用

html - 使用 flex 时在 div 而不是整个页面上滚动

html - CSS:具有 3 个 div 的 Flex 容器