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

Yve*_*ves 5 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;
}
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

它应该这样呈现: 在此处输入图片说明

Sti*_*ers 6

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

.container .col-main {
  ...
  min-width: 0;
}
Run Code Online (Sandbox Code Playgroud)

jsFiddle

4.5。弹性项目的隐含最小大小

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


sol*_*sol 5

您可以添加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;
}
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

  • 这样就可以了... width: 0, ok CSS 我完全支持flex,但这里绝对是WTF (2认同)