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

如何让overflow-y-auto在子元素超限时触发?当前配置未生效

问题根源

你给内层两个div分别设置了h-[40%]和h-[60%],两者高度总和刚好等于外层容器的h-full,导致无论添加多少<article>,只会让第二个子div内部触发滚动,外层容器永远不会出现内容溢出。

解决办法

方案1:移除第二个子div的固定高度

保留第一个子div的h-[40%](如需固定比例),去掉第二个子div的h-[60%],让它根据<article>数量自适应高度。当<article>增多时,第二个子div高度会超过原60%占比,整体内容总高度超过外层h-full,外层的overflow-y-auto就会生效。

修改后代码:

<div className="overflow-y-auto h-full w-full">
    <div className="w-full h-[40%]">
        <p>something</p>
    </div>
    <div className="w-full">
        <article>some stuff</article>
        <article>some stuff</article>
        <article>some stuff</article>
        <!-- 添加更多article -->
    </div>
</div>

方案2:用Flex布局优化高度控制

给外层容器添加flex flex-col,第一个子div设置flex-shrink-0(避免被压缩)和固定高度/比例,第二个子div不设固定高度,随内容自然扩展。这种方式更灵活,同样能让整体内容超过外层高度时触发滚动。

修改后代码:

<div className="overflow-y-auto h-full w-full flex flex-col">
    <div className="w-full h-[40%] flex-shrink-0">
        <p>something</p>
    </div>
    <div className="w-full">
        <article>some stuff</article>
        <article>some stuff</article>
        <!-- 添加更多article -->
    </div>
</div>

补充:若需顶部区域固定、仅下方内容滚动

如果你实际需求是让顶部区域保持可见,只有<article>区域滚动,那应该把overflow-y-auto加到第二个子div上,外层无需设置滚动:

<div className="h-full w-full">
    <div className="w-full h-[40%]">
        <p>something</p>
    </div>
    <div className="w-full h-[60%] overflow-y-auto">
        <article>some stuff</article>
        <!-- 添加更多article -->
    </div>
</div>

内容的提问来源于stack exchange,提问作者me-an-ape

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:15:58