无法在全宽度flexbox列中使overflow-x工作

时间:2017-04-05 15:07:44

标签: css flexbox

我正在尝试使用flexbox创建一个2列布局。一个是侧面固定宽度,另一个(主柱)填充剩余空间。

直到我将一些内容放在比overflow-x: scroll父级的屏幕更广的内容之前一直工作。现在,这个广泛的内容不受其滚动父级的限制。

以下是示例:

.container {
  display: flex;
}
.container .col-main {
  background: gold;
  flex: 1 1 100%;
}
.container .col-side {
  background: cornflowerblue;
  flex: 0 0 15em;
}

.slider-container {
  overflow-x: scroll;
}
.slider-container .slider {
  background: repeating-linear-gradient(45deg, darkseagreen, darkseagreen 10px, dimgray 10px, dimgray 20px);
  width: 150em;
  height: 10em;
}
<div class="container">
  <div class="col-main">

    <div class=slider-container>
      <div class="slider">
        Foo
      </div>
    </div>

  </div>
  <div class="col-side">
    Side
  </div>
</div>

它应该像这样呈现: enter image description here

2 个答案:

答案 0 :(得分:4)

尝试将min-width: 0;添加到弹性项目。

.container .col-main {
  ...
  min-width: 0;
}

<强> jsFiddle

4.5. Implied Minimum Size of Flex Items

  

为了为flex项提供更合理的默认最小大小,此规范引入了一个新的auto值作为CSS 2.1中定义的min-widthmin-height属性的初始值。 [CSS21]

答案 1 :(得分:3)

您可以将width: 0添加到容器中。

.container {
  display: flex;
}

.container .col-main {
  background: gold;
  flex: 1 1 100%;
  width: 0;
}

.container .col-side {
  background: cornflowerblue;
  flex: 0 0 15em;
}

.slider-container {
  overflow-x: scroll;
}

.slider-container .slider {
  background: repeating-linear-gradient(45deg, darkseagreen, darkseagreen 10px, dimgray 10px, dimgray 20px);
  width: 150em;
  height: 10em;
}
<div class="container">
  <div class="col-main">

    <div class=slider-container>
      <div class="slider">
        Foo
      </div>
    </div>

  </div>
  <div class="col-side">
    Side
  </div>
</div>