【问题标题】:Flex box Responsive Layout with Left and Right Container具有左右容器的 Flex 框响应式布局
【发布时间】:2022-01-19 05:33:25
【问题描述】:

我在移动设备中遇到了 flexbox 布局问题。台式机看起来不错 在移动视图中,我想如下所示显示

  1. 首先应该显示“概览”框
  2. 第二个应该显示“付款”框
  3. 第三个应该显示“活动”框

.div1 {
  box-sizing:border-box;
  border:0.5px solid red;
}

.main-container {
  height:100%;
  display:flex;
}

.left-container {
  flex:1 1 0;
}

.right-container {
  flex:1 1 0;
  display:flex;
  //flex-direction:column; 
}

.half-containers {
  flex:1;
  overflow:auto;
  order: 1;
}

.half-containers-activity {
  flex:1;
  overflow:auto;
  order: 0;
}

@include media-breakpoint-down(sm) {
  .main-container {
    flex-direction: row;

      }
}
<div class="div1">
  <div class="main-container">
    <div class="left-container">
      <div class="half-containers">
        Overview
      </div>
      <div class="half-containers-activity">
        Activity
      </div>
    </div>
    <div class="right-container">
      Payment
    </div>
  </div>
</div>

【问题讨论】:

  • 对于桌面视图我在我的问题中发布的内容我想要相同的视图。对于移动视图,我希望显示如下水平概览 => 付款 => 帐户活动
  • 试试flex-wrap: wrap 并给这3个宽度
  • 能否举个例子?

标签: html css angular flexbox responsive-design


【解决方案1】:

您可以使用以下方法。这里的主要内容是在.left-container 上使用display: contents; 来“中和”它,以便所有三个元素都可以“在一个级别”用作弹性子元素,并根据order 参数对其应用。当然,所有这些都在媒体查询中,以保持桌面版本不变。

.div1 {
  box-sizing: border-box;
  border: 0.5px solid red;
}

.main-container {
  height: 100%;
  display: flex;
}

.left-container {
  flex: 1 1 0;
}

.right-container {
  flex: 1 1 0;
  display: flex;
  //flex-direction:column; 
}

.half-containers {
  flex: 1;
  overflow: auto;
  order: 1;
}

.half-containers-activity {
  flex: 1;
  overflow: auto;
  order: 0;
}

@media screen and (max-width: 700px) {
  .main-container {
    flex-direction: column;
  }
  .left-container {
    display: contents;
  }
  .half-containers {
    order: 0;
  }
  .right-container {
    order: 1;
  }
  .half-containers-activity {
    order: 2;
  }
}
<div class="div1">
  <div class="main-container">
    <div class="left-container">
      <div class="half-containers">
        Overview
      </div>
      <div class="half-containers-activity">
        Activity
      </div>
    </div>
    <div class="right-container">
      Payment
    </div>
  </div>
</div>

我应该补充一点,display: contents; 仍然被视为“实验价值”,但浏览器支持已经相当不错了:https://caniuse.com/?search=display%3A%20contents

【讨论】:

  • 非常感谢您的回复。此解决方案适用于移动设备。我学到了一些新东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-16
  • 2016-03-21
  • 2019-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多