html - 为什么子 div 不超出 flex 行容器

标签 html css

<分区>

See problem in codepen: https://codepen.io/pencillrpal/pen/QWLOLGv

我有一个 flex 容器,其中我将有一个水平 slider ,其中的元素与整个页面宽度一样长。

但我意识到我无法控制子元素的宽度,因为它们的宽度始终适合容器,并且不会超出容器。

不过我找到了一个窍门。如果我将我的子 div 一个一个地包装到一个 div 中,它将按我想要的方式工作。

为什么会这样?

.container {
  display: flex;
  flex-direction: row;
  justify-content: center;
  height: 40vh;
  max-width: 100%;
  overflow-x: hidden;
  border: 5px solid black;
  margin: 0 auto;
}

.box {
  position: relative;
  width: 90vw;
  margin: 10px;
  line-height: 10vh;
  text-align: center;
  background: black;
  color: white;
  border: 5px solid red;
}
<h1>Box should have 100vw width</h1>
<div class="container">
  <div class="box">
    <h3>Box</h3>
  </div>
  <div class="box">
    <h3>Box</h3>
  </div>
  <div class="box">
    <h3>Box</h3>
  </div>
</div>

<h1>This one has though</h1>
<div class="container">
  <div>
    <div class="box">
      <h3>Box</h3>
    </div>
  </div>
  <div>
    <div class="box">
      <h3>Box</h3>
    </div>
  </div>
  <div>
    <div class="box">
      <h3>Box</h3>
    </div>
  </div>
</div>

最佳答案

可以控制 flex 子项的宽度。所有的 flex child 都有默认的 flex 值来控制 flex-growflex-shrink 属性。禁用这些属性,您将可以控制宽度。

将这些行添加到您的 CSS。

/**
 * Disable flex grow and shrink so that it no longer tries to divide the
 * space between the .box elements.
 *
 * Use flex-basis or width to control the width of the element.
 */
.box {
    flex-grow: 0;
    flex-shrink: 0;
    flex-basis: 90vw;
    width: 90vw;
}

关于html - 为什么子 div 不超出 flex 行容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57778039/

相关文章:

html - 使我的网站能够扩展到移动设备

css - 引导媒体断点

css - 将内容宽度设置为自动等于宽度

html - 在列表元素内绝对定位

php - 拒绝应用来自 [Link] 的样式,因为它的 MIME 类型 ('text/html' ) 不是受支持的样式表 MIME 类型,并且启用了严格的 MIME 检查

javascript - jquery 选择器提取子元素并附加到另一个元素

jquery - 如何设置 float 动画 :left divs?

html - IE9奇怪的表格问题

html - <p> 在 float 中的行为

javascript - 创建不带滚动条的可滚动弹出框