Flex子元素超出父容器元素,并具有溢出滚动

时间:2018-10-24 11:06:09

标签: html css css3 flexbox

如何使main-content从右侧收缩而不是在侧边栏后面收缩?不确定我想做的事情是否需要flexbox,但是它几乎可以正常工作。

https://codepen.io/anon/pen/qJJeMr

html,
body {
  margin: 0;
}

.container {
  position: fixed;
  height: 100%;
  width: 100%;
}

.row {
  height: 100%;
  display: flex;
}

.main-content {
  background: white;
  height: 100%;
  flex: auto;
  display: flex;
  justify-content: center;
  align-items: center;
  white-space: nowrap;
  overflow-x: auto;
}

.main-content .content {
  background: lightgreen;
  padding: 10px;
  margin: 10px;
  height: 300px;
  display: flex;
  min-width: 720px;
}

.sidebar {
  background: #f2f2f2;
  height: 100%;
  width: 700px;
  flex: none;
  display: flex;
}

.sidebar .side-menu-bar {
  height: 100%;
  width: 80px;
  background: lightcyan;
  flex: none;
}
<div class="container">

  <div class="row">

    <div class="sidebar">
      <div class="side-menu-bar"></div>
      <div class="side-content-panel"></div>
    </div>

    <div class="main-content">
      In main container, outside main content...

      <div class="content">
        This is the main content.
      </div>
    </div>

  </div>

</div>

2 个答案:

答案 0 :(得分:0)

它并没有按照您的要求收缩,而是与其同级元素重叠,因为它具有固定的最小宽度。

.main-content .content {
    background: lightgreen;
    padding: 10px;
    margin: 10px;
    height: 300px;
    display: flex;
    min-width: 720px; <----- HERE
}

答案 1 :(得分:0)

由于您为min-width:720px;指定了.content,因此右边的主要内容没有减少。一旦删除,您的问题将得到解决。