Flexbox子项在Safari中崩溃[重复]

Posted

技术标签:

【中文标题】Flexbox子项在Safari中崩溃[重复]【英文标题】:Flexbox children collapse in Safari [duplicate] 【发布时间】:2021-04-28 23:09:12 【问题描述】:

Flexbox 子项在 Safari 中折叠,但在其他浏览器中不折叠。这是最小的示例 (JSFiddle):

<html>
<body style="display: flex;height: 100vh;flex-flow: column;">
  <div style="display: flex;background: red;">
    <div style="padding: 1rem;">test</div>
  </div>
  <div style="height: 1000rem;"></div>
</body>
</html>

这里我们有一个带有红色背景的div,用一些填充包裹另一个div。还有一个非常高的 flex child (1000rem)。

在 Chrome 或 Firefox 中,结果看起来很正常。红色的 flex 孩子正确地包裹了自己的孩子:

现在在 Safari 中它看起来完全错误(在版本 14.0.2 (16610.3.7.1.9) 上测试)- 第二个高子导致第一个崩溃:

红孩子虽然生了孩子,但还是晕倒了。看起来浏览器应用的默认 min-height: auto 在 Safari 中被忽略了。

是否有使 Safari 符合规范的解决方法?

【问题讨论】:

flex-shrink:0 到红色 div? 可能重复:***.com/q/57044598/3597276 @TemaniAfif 它如何在其他浏览器中工作? * flex-shrink: 0 安全吗?我需要让整个网站正常工作 我不认为启用收缩到所有元素是安全的,你会有不必要的溢出。只需为您有问题的元素执行此操作 @TemaniAfif 我不同意这个问题是重复的。我在问“是否有一种解决方法可以让 Safari 按照规范运行?”不是“我需要改变什么才能让它在 Safari 中看起来不错” 【参考方案1】:

你能检查下面的代码链接吗?希望它对你有用。我们在正文中添加了flex-wrap:wrap;,并在其最后一个子项中添加了flex:1;,因此它将占据全宽。

请参考此链接:https://jsfiddle.net/yudizsolutions/4oh5sb3a/1/

<body style="display: flex; display: -webkit-flex; height: 100vh;flex-flow: column; flex-wrap:wrap; -webkit-flex-wrap:wrap; ">
  <div style="display: flex;background: red; ">
    <div style="padding: 1rem;">test</div>
  </div>
  <div style="height: 1000rem; flex:1;"></div>
</body>

【讨论】:

谢谢,但这并不能回答我的问题:“有没有一种解决方法可以使 Safari 的行为符合规范?”

以上是关于Flexbox子项在Safari中崩溃[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Flexbox 子项在 Safari 中呈现错误

如何在 Safari 中将 flex 容器的绝对定位子项居中?

Flexbox 在 Safari 9.1.1 上不起作用 [重复]

嵌套的 Flexbox 100% 高度在 Safari 中不起作用 [重复]

文本正在调整 flexbox 子项的大小而不是换行(使用 flex-grow)[重复]

Flexbox水平对齐项目[重复]