【问题标题】:Flexbox children collapse in Safari [duplicate]Flexbox子项在Safari中崩溃[重复]
【发布时间】: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?
  • @TemaniAfif 它如何在其他浏览器中工作? * { flex-shrink: 0 } 安全吗?我需要让整个网站正常工作
  • 我不认为启用收缩到所有元素是安全的,你会有不必要的溢出。只需为您有问题的元素执行此操作
  • @TemaniAfif 我不同意这个问题是重复的。我在问“是否有一种解决方法可以让 Safari 按照规范运行?”不是“我需要改变什么才能让它在 Safari 中看起来不错”

标签: css flexbox 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 的行为符合规范?”
猜你喜欢
  • 2015-12-17
  • 2015-09-12
  • 2015-08-05
  • 2018-02-15
  • 2012-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多