css - 嵌套的 flex 盒在不同浏览器中的工作方式不同

标签 css google-chrome html flexbox

我有一个嵌套 flexbox 设置的小例子:http://jsfiddle.net/ThomasSpiessens/MUrPj/12/

在此示例中,以下内容适用:

  • CSS 'box' 类使用 flexbox 属性,只有 boxContent 被告知增长。对于特定的 CSS 属性和值,请查看 fiddle 。
  • 'fullSize' 只是将宽度和高度都设置为 100%。

当你用 Firefox 和 Chrome 检查这个 fiddle 时,你会得到不同的结果。在 Firefox 中,它执行我认为它必须执行的操作,即拉伸(stretch)内部 .boxContent。然而,在 Chrome 中,内部的 .boxContent 不会被拉伸(stretch)。

谁知道如何在 Chrome 中也拉伸(stretch)内容?可能缺少特定的 webkit 属性?

.fullSize {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
}

.box {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-orient: vertical;
  -moz-box-orient: vertical;
  -ms-flex-direction: column;
  -webkit-flex-direction: column;
  flex-direction: column;
  background-color: brown;
}


/* line 7, ../../app/styles/_layout.scss */

.boxHeader {
  -ms-flex: 0 0 auto;
  -webkit-flex: 0 0 auto;
  flex: 0 0 auto;
  background-color: green;
}


/* line 12, ../../app/styles/_layout.scss */

.boxContent {
  -ms-flex: 1 0 auto;
  -webkit-flex: 1 0 auto;
  flex: 1 0 auto;
  -webkit-box-flex: 1.0;
  background-color: yellow;
}


/* line 18, ../../app/styles/_layout.scss */

.boxFooter {
  -ms-flex: 0 1 auto;
  -webkit-flex: 0 1 auto;
  flex: 0 1 auto;
  background-color: cornflowerblue;
}

.moreblue {
  background-color: blue;
}

.moregreen {
  background-color: darkgreen;
}

.red {
  background-color: red;
}
<div class="box fullSize">
  <div class="boxHeader">HEADER</div>
  <div class="boxContent">
    <div class="box fullSize">
      <div class="boxHeader moregreen">INNER HEADER</div>
      <div class="boxContent red">CONTENT CONTENT CONTENT</div>
      <div class="boxFooter moreblue">INNER FOOTER</div>
    </div>
  </div>
  <div class="boxFooter">FOOTER</div>
</div>

最佳答案

除非您需要那个额外的 div,否则请将其删除。有时,元素的高度与其沿主轴(列方向)的长度之间存在差异,这会在此处造成一些困惑。基本上,它看起来比浏览器认为的要高,这就是为什么 height: 100% 不能像您期望的那样工作(我不确定在这种情况下哪种行为是正确的)。

无论出于何种原因,将元素提升到 flex 容器 都是可行的。

http://jsfiddle.net/MUrPj/14/

<div class="box fullSize">
    <div class="boxHeader">HEADER</div>
    <div class="boxContent box">
        <div class="boxHeader moregreen">INNER HEADER</div>
        <div class="boxContent red">CONTENT CONTENT CONTENT CONTENT CONTENT CONTENT CONTENT CONTENT CONTENT CONTENT CONTENT</div>
        <div class="boxFooter moreblue">INNER FOOTER</div>
    </div>
    <div class="boxFooter">FOOTER</div>
</div>

关于css - 嵌套的 flex 盒在不同浏览器中的工作方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18639129/

相关文章:

javascript - 是否可以再次添加和删除数据滚动速度标签?

javascript - JavaScript 代码应该掌握多少 DOM 知识?

html - 这些编码风格是否正确?

javascript - 改变 Canvas 的大小使其模糊

CSS 背景位置

html - 使用 rowspan 突出显示行

javascript - 如何在用户第二次点击时隐藏移动设备上的元素?

google-chrome - Chrome 扩展程序 : (DOM)Debugger API does not work anymore

javascript - "+"登录 JS mailto 链接(Android 和 Chrome)

css - Flexbox 列中的图像无法在 Chrome 中正确呈现