【问题标题】:Can flexbox sidebars share a new row?flexbox 侧边栏可以共享新行吗?
【发布时间】:2017-03-30 19:24:48
【问题描述】:

在媒体查询之后,我可以让 flexbox 侧边栏共享​​新行吗?

之前(在宽屏幕上)

+---+-------+---+
|   |       |   |
| L |  Main | R |
|   |       |   |
+---+-------+---+

之后(在窄屏幕上)

+-------+
|       |
|  Main |
|       |
+-------+
|   |   |
| L | R |
|   |   |
+-------+

HTML(媒体查询后不可更改)

<div class="container">
  <div class="sideLeft">L</div>
  <div class="MainContent">Main</div>
  <div class="sideRight">R</div>
</div>

【问题讨论】:

  • 你的 CSS 是什么样的?
  • 我没有深入到 CSS,因为我不知道 flexbox 模型是否可以做到。我知道它可以以任何顺序将它们全部堆叠在一起。但这是我的第一次尝试:jsfiddle.net/0tb5yyto 我也尝试添加 flex-wrap:nowrap

标签: html css responsive-design flexbox


【解决方案1】:

您可以使用媒体查询更改 main div 上的 order: -1。您还需要在container 元素上设置flex-wrap: wrapcalc(% - 10px) 也适用于两侧 5px 的 margin,但如果您不想要边距,您可以使用 % ,因为您可以使用 here

* {
  box-sizing: border-box;
}
.container {
  display: flex;
  flex-wrap: wrap;
  height: 200px;
  border: 1px solid gray;
  padding: 5px
}
.container > div {
  display: flex;
  border: 1px solid black;
  margin: 5px;
  flex: 1;
}
div.main {
  flex: 3;
}
@media(max-width: 480px) {
  div.main {
    order: -1;
    flex: 0 0 calc(100% - 10px);
  }
  .container > div:not(.main) {
    flex: 0 0 calc(50% - 10px);
  }
}
<div class="container">
  <div class="sideLeft">L</div>
  <div class="main">Main</div>
  <div class="sideRight">R</div>
</div>

【讨论】:

  • 谢谢你,你是个天才。现在我只需要了解你做了什么,以及它为什么有效!这比我预期的要复杂得多。
  • 不客气,这并不难,您可以在这里阅读更多信息developer.mozilla.org/en-US/docs/Web/CSS/…
猜你喜欢
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
  • 2017-07-31
  • 1970-01-01
  • 1970-01-01
  • 2016-06-26
相关资源
最近更新 更多