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

React.js中如何让Timeline区块内容完整显示且不溢出到Contact区块

问题根源
  • 代码中给.sections下所有直接子区块强制设置了固定高度height: calc(100vh - 70px),当Timeline的内容高度超过这个固定值时,就会溢出到下方的Contact区块
  • .sections设置了scroll-snap-type: y mandatory强制滚动捕捉规则,会强行按视口高度切割内容,也会导致长内容的Timeline无法完整展示
  • 额外布局问题:.sections设置了display: flex但没有指定纵向排列,默认横向排列区块,也可能引发布局错乱
修复方案(两种按需选择)

方案1:允许Timeline自适应内容高度(推荐,满足完整展示需求)

直接修改app.scss的对应规则即可,调整后的完整代码如下:

.app {
    height: 100vh;

    .sections {
        width: 100%;
        min-height: calc(100vh - 70px); /* 固定高度改最小高度,适配所有区块的总内容高度 */
        // background-color: #1F1D36;
        position: relative;
        top: 70px;
        scroll-behavior: smooth;
        display: flex;
        flex-direction: column; /* 新增:指定区块纵向排列 */
        scroll-snap-type: y proximity; /* 强制捕捉改临近捕捉,避免切割长内容 */
        scrollbar-width: none; // for firefox
        &::-webkit-scrollbar{
            display: none;
        }

        > * {
            width: 100vw;
            min-height: calc(100vh - 70px); /* 固定高度改最小高度,内容少占满一屏,内容多自动撑开 */
            scroll-snap-align: start;
        }
    }
}

修改后所有区块会自动适配内容高度,Timeline内容再多也会自动撑开容器,不会溢出到Contact区块,同时保留滚动锚定的交互体验。

方案2:保持单屏滚动交互,Timeline内部滚动

如果你需要严格保留原来的每个区块刚好占满一屏的滚动逻辑,可以给Timeline组件单独加内部滚动规则,在Timeline对应的样式文件中添加:

// 把.timeline替换为你Timeline组件的根节点类名
.timeline {
    height: 100%;
    overflow-y: auto;
    scrollbar-width: none;
    &::-webkit-scrollbar {
        display: none;
    }
}

修改后Timeline内容超过高度时会在区块内部滚动,不会溢出到其他区块,也不会破坏原有全局滚动逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:24:03