Flexbox 在 Safari 中设置错误的 iframe 高度

Cra*_*lot 6 html css safari iframe google-chrome

在 Safari 中使用 flex 设置 iframe 高度不起作用。在 Safari 中,iframe 的高度上限为默认高度 150。

这个问题这个问题很相似,但解决方案没有帮助。

这个 Codepen 说明了这个问题:Chrome 和 Firefox 中的红色矩形比 150px 高得多,几乎占据了所有黑色矩形,但 iframe 在 Safari 中只有 150px 高。

代码笔:https ://codepen.io/anon/pen/rEQbMG

<div id="rootBox">
  <div id="mainBox">
    <div id="previewBox">
      <iframe class="previewContent"></iframe>
    </div>
  </div>  
</div>

#rootBox {
  width: 100%;
  height: 700px;
  display: flex;
  background-color: #FFF;
  flex-grow: 1;
  box-sizing: border-box;
  margin: auto;
}

#mainBox {
  background: black;
  height: 100%;
  flex-grow: 1;
  flex-shrink: 1;
  display: flex;
  flex-direction: column;
  align-content: stretch;
  box-sizing: border-box;
}


#previewBox {
  background: yellow;
  flex-grow: 1;
  width: 100%;
  margin: 25px auto 25px;
}


#previewBox .previewContent {
  width: 100%;
  height: 100%;
  background: red;
}
Run Code Online (Sandbox Code Playgroud)

Tem*_*fif 4

Safari 似乎无法height:100%像 Chrome 和 Firefox 那样解决 iframe 的问题。相反,您可以通过调整代码来考虑 Flexbox 的拉伸效果,如下所示:

#rootBox {
  width: 100%;
  height: 700px;
  display: flex;
  background-color: #FFF;
  flex-grow: 1;
  box-sizing: border-box;
  margin: auto;
}

#mainBox {
  background: black;
  height: 100%;
  flex-grow: 1;
  flex-shrink: 1;
  display: flex;
  flex-direction: column;
  align-content: stretch;
  box-sizing: border-box;
}


#previewBox {
  background: yellow;
  flex-grow: 1;
  display:flex; /* Added */
  width: 100%;
  margin: 25px auto 25px;
}


#previewBox .previewContent {
  width: 100%;
 /* height: 100%; removed */
  background: red;
}
Run Code Online (Sandbox Code Playgroud)
<div id="rootBox">
  <div id="mainBox">
    <div id="previewBox">
      <iframe class="previewContent"></iframe>
    </div>
  </div>  
</div>
Run Code Online (Sandbox Code Playgroud)