MacOS 浏览器压缩内容以适应

MacOS Browsers Squish Content to Fit

我在一些 React 开发中注意到的一点是,MacOS 浏览器试图将所有页面内容塞入视图,而不是简单地允许用户滚动。例如:

function Example()
{
    const Elements = (new Array(5)).fill(<div style={{backgroundColor: 'red', border: '1px solid', height: '100px', width: '100%'}} />)
    return (
        <div style={{
            display: 'flex',
            flexDirection: 'column',
            alignItems: 'center',
            justifyContent: 'flex-start',
            overflow: 'auto',
            height: '500px',
            width: '100px',
        }}>
            {Elements}
        </div>
    )
}

在 MacOS 和 Windows 上都能正常显示。但是,当您将 new Array(5) 更改为 new Array(50) 时,只有 Windows 浏览器会按预期显示。 MacOS 上的所有浏览器都试图将 50 个 div 填充到 500px 容器中。

如果我设置 min-height,它将起作用。 但是,当使用 Material-UI 组件时,这会非常令人沮丧 CollapseExpansionPanels 其中高度是动画的(或者甚至只是其他未指定 min-height 的组件)。为什么只有 MacOS 浏览器会这样做,我如何 fix/get 绕过它而无需手动 animating/setting min-height?

所以我不一定能解释 为什么 MacOS 浏览器会这样做,但我想出了解决方法。在应该滚动而不是压缩的容器(和子容器)上设置 flex-shrink: 0 似乎可以解决问题。我很想知道这是否是 flexbox 错误或功能,或者我是否误解了 flexbox。