You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Flex容器父元素强制触发滚动溢出?

如何让Flex容器在子元素无内容时强制触发滚动?

现有如下代码,父容器设置为display:flex + flex-flow:column,子元素设为200vh高度但无内容,此时父容器不会显示滚动条;但移除display:flex或给子元素填充内容后,滚动条正常出现。需求是即使子元素为空,也要让父容器强制溢出显示滚动条,用于后续通过脚本控制滚动到指定位置。

原代码示例:

<!DOCTYPE html>
<html>
    <head>
        <style>
            * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            }

            html,
            body {
                height: 100%;
                width: 100%;
                margin: 0;
            }

            .child {
                height: 200vh;
                width: 100vw;
                background: yellow;
            }

            .parent {
                display: flex;
                flex-flow: column;
                height: 100%;
                background: green;
                overflow: scroll;
            }
        </style>
    </head>
    <body>
        <div class="parent">
            <div class="child"> </div>
        </div>
    </body>
</html>

解决方法

给子元素添加flex-shrink: 0属性,阻止Flex容器压缩子元素的高度:

<!DOCTYPE html>
<html>
    <head>
        <style>
            * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            }

            html,
            body {
                height: 100%;
                width: 100%;
                margin: 0;
            }

            .child {
                height: 200vh;
                width: 100vw;
                background: yellow;
                flex-shrink: 0; /* 新增属性 */
            }

            .parent {
                display: flex;
                flex-flow: column;
                height: 100%;
                background: green;
                overflow: scroll;
            }
        </style>
    </head>
    <body>
        <div class="parent">
            <div class="child"> </div>
        </div>
    </body>
</html>

原理说明

Flex布局中,column方向的子元素默认flex-shrink: 1,这意味着即使你给子元素设置了固定高度,Flex容器也会优先压缩子元素来适配自身的高度限制。当子元素没有内容时,这种压缩行为会直接让子元素的实际高度被压缩到容器高度,导致无法触发溢出滚动。

添加flex-shrink: 0后,子元素会严格保持你设置的200vh高度,超出父容器的100%高度限制,从而触发overflow: scroll显示滚动条。

内容的提问来源于stack exchange,提问作者Willem Vanhulle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 11:40:20