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

移动端汉堡菜单overflow:auto无法显示全部内容问题

汉堡菜单滚动异常解决方案

问题说明

实现汉堡菜单时,初始通过top: -100%隐藏,点击按钮后从顶部滑出。菜单设置position: fixed、height: 100%且overflow: auto,但当菜单内容高度超过窗口高度时,无法滚动至底部查看最后一项。将激活状态的top: 63px改为top: 0时滚动恢复正常,但布局要求必须保留top: 63px。

问题原因

设置height: 100%的同时指定top: 63px,会让菜单总高度等于视口高度,且从顶部63px位置开始向下延伸,导致菜单底部超出视口63px,这部分超出的内容无法通过滚动显示。

解决方法

方法一:用calc计算适配高度

将菜单的height改为calc(100% - 63px),让菜单高度等于视口高度减去顶部偏移的63px,刚好填满剩余视口空间,避免内容超出。

修改后的CSS代码:

.header__menu_mobile {
    position: fixed;
    top: -100%;
    left: 0;
    padding: 0;
    width: 100%;
    height: calc(100% - 63px); /* 修改此处 */
    background-color: white;
    color: #252525;
    z-index: 3;
    overflow: auto;
    transition: all 0.3s ease 0s;
}
.header__menu_mobile .header__list {
    font-weight: 300;
    font-size: 16px;
    line-height: 19px;
    width: 100%;
}
.header__menu_mobile .header__list li {
    width: 100%;
    padding: 20px 0;
}
.header__menu_mobile .header__list li a {
    text-decoration: none;
    color: #252525;
}
.header__menu_mobile.active {
    top: 63px;
}

方法二:用inset属性简化定位

用inset属性替代top和height,直接定义菜单四个边的位置,让菜单从顶部63px开始,延伸至左右底部,自动适配高度:

修改后的CSS代码:

.header__menu_mobile {
    position: fixed;
    inset: -100% 0 0 0; /* 初始隐藏:顶部为-100% */
    padding: 0;
    width: 100%;
    background-color: white;
    color: #252525;
    z-index: 3;
    overflow: auto;
    transition: all 0.3s ease 0s;
}
.header__menu_mobile .header__list {
    font-weight: 300;
    font-size: 16px;
    line-height: 19px;
    width: 100%;
}
.header__menu_mobile .header__list li {
    width: 100%;
    padding: 20px 0;
}
.header__menu_mobile .header__list li a {
    text-decoration: none;
    color: #252525;
}
.header__menu_mobile.active {
    inset: 63px 0 0 0; /* 激活时:顶部为63px,其余边为0 */
}

HTML代码保持不变:

<div class="header__menu_mobile">
 <div class="container">
  <ul class="header__list">
   <li><a href="">Item 1</a></li>
   <li><a href="">Item 2</a></li>
   <li><a href="">Item 3</a></li>
   <li><a href="">Item 4</a></li>
   <li><a href="">Item 5</a></li>
   <li><a href="">Item 6</a></li>
   <li><a href="">Item 7</a></li>
   <li><a href="">Item 8</a></li>
  </ul>
  <div class="contacts">
   <a class="contact">Email</a>
   <a class="contact">Instagram</a>
   <a class="contact">Facebook</a>
  </div>
 </div>
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 06:56:55