【发布时间】: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 中看起来不错”