html - Flexbox 侧边栏可以共享新行吗?

标签 html css responsive-design flexbox

在媒体查询后,我可以让 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>

最佳答案

您可以使用媒体查询更改 main div 上的 order: -1。您还需要在 container 元素上设置 flex-wrap:wrap 。另外,calc(% - 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>

关于html - Flexbox 侧边栏可以共享新行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40634800/

相关文章:

Jquery GoogleMaps Api onclick显示

html - 调整 div 大小以适合纵向模式

javascript - 如何获取具有属性 tabindex 的下一个元素

jquery - 覆盖样式,只需要jQuery解决

javascript - 输入显示在我的固定标题中

Javascript 图像随时间改变位置

html - 如何使用 'aside' 标签使垂直图像居中?

javascript - 根据选择框选项向 div 添加 CSS 规则

html - CSS3 过渡不起作用

CSS - 菜单上的统一响应式背景图像