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

移动端侧边菜单展开时隐藏主内容div的实现方案

解决方案

要实现移动端侧边菜单展开时隐藏主内容,可借助Bootstrap Collapse组件的事件监听来控制主内容的显示状态,具体步骤如下:

1. 为主内容容器添加ID

修改主内容的div标签,增加唯一ID以便JS选择:

<!-- main content -->
<div id="main-content-container" class="col-auto container-fluid d-flex main-content p-0" style="flex-grow: 1">
  <div class="container-fluid d-sm-inline m-0 pb-2">
    <iframe id="main" src="formlar/tab.html" frameborder="0" width="100%" height="95%"></iframe>
  </div>
</div>

2. 添加JavaScript事件监听

通过监听Bootstrap Collapse的shown.bs.collapse和hidden.bs.collapse事件,控制主内容的显示与隐藏:

// 监听所有子菜单的折叠/展开事件
document.querySelectorAll('#menu .collapse').forEach(collapseEl => {
  // 菜单展开时隐藏主内容
  collapseEl.addEventListener('shown.bs.collapse', () => {
    document.getElementById('main-content-container').classList.add('d-none');
  });

  // 菜单折叠时,检查是否所有子菜单都已收起,是则显示主内容
  collapseEl.addEventListener('hidden.bs.collapse', () => {
    const allCollapsed = Array.from(document.querySelectorAll('#menu .collapse'))
      .every(el => !el.classList.contains('show'));
    if (allCollapsed) {
      document.getElementById('main-content-container').classList.remove('d-none');
    }
  });
});

3. 优化移动端CSS(可选)

补充CSS确保主内容隐藏时完全不占用空间:

@media screen and (max-width: 767px) {
  #menu1,
  #menu2,
  #menu3,
  #menu4,
  #menu5 {
    text-align: center;
    width: 100vw;
    font-size: 16px !important;
  }

  .main-content.d-none {
    display: none !important;
  }
}

原理说明

  • 当任意子菜单展开时,给主内容容器添加Bootstrap的d-none类,使其隐藏;
  • 当子菜单折叠时,检查所有子菜单的状态,只有当全部子菜单都收起时,才移除d-none类,显示主内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 11:48:12