Flexbox 中水平边距超出父级 div 范围

Max*_*ton 1 html css sass flexbox

我使用 Flex 时的边距出现了一些意外的行为,我需要一些帮助来理解原因。

我有一些简单的 html,如下所示:

<div className="dashboard">
    <div className="dashboard__inner-container">Inner Container</div>
</div>
Run Code Online (Sandbox Code Playgroud)

我的 scss 文件如下所示:

.dashboard {
  text-align: center;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  flex: 1 1 auto;
  background-color: #f4f6f8;
}

.dashboard__inner-container {
  display: flex;
  flex-direction: column;
  background-color: #ffffff;
  flex: 1 1 auto;
  width: 100%;
  margin: 100px 50px;
}
Run Code Online (Sandbox Code Playgroud)

我期望的是内部容器将完全填满父容器,顶部和底部减去 100px,左右减去 50px。垂直边距按预期工作,但水平边距实际上延伸到父 div 之外,因此内部容器看起来仍然占据了父 div 的整个宽度。

我不确定这是否与 Flexbox 有关。

这是一个孤立的 CodePen https://codepen.io/MaxMillington2/pen/EQWZoj

LGS*_*Son 5

align-items: centercolumn方向一起使用时,该项目将折叠到其内容宽度,而不是默认的 ,stretch这使其填充其父级的宽度。

此外,当设置width: 100%为 时inner,它将覆盖默认值stretch,这将使项目成为父级宽度+边距的 100%。

为了获得预期的输出,请删除和上的align-items: center内容。outerwidth: 100%inner

堆栈片段

html {
  height: 100%;
  overflow: auto;
}

.outer {
  display: flex;
  justify-content: center;
  flex-direction: column;
  background-color: #f4f6f8;
  height: 100%;
}

.inner {
  display: flex;
  flex-direction: column;
  background-color: #ffffff;
  flex: 1 1 auto;
  text-align: center;
  margin: 100px 80px;
}
Run Code Online (Sandbox Code Playgroud)
<div class='outer'>
  outer
  <div class='inner'>
    inner
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)