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

Bootstrap 5下拉菜单触发Modal仅显示灰色背景无内容如何解决

问题原因

你将Modal组件的DOM结构写在了下拉菜单(.dropdown-menu)的内部,导致Modal显示被限制:

  • Bootstrap的.dropdown-menu默认有overflow: hidden规则,同时属于独立的堆叠上下文,z-index层级低于全局Modal遮罩层,内部的Modal会被父容器裁剪、层级不足无法显示,仅能看到全局的灰色遮罩
  • 点击下拉菜单项触发Modal时,下拉菜单会默认收起,也会连带隐藏内部的Modal节点

解决方法

将Modal的完整DOM结构从下拉菜单中移出,放在和下拉组件同级的位置,或者页面底部</body>标签之前即可,触发按钮的data-bs-target="#test"和Modal的id对应关系无需修改。

修改后的正确代码示例:

<div class="container">
  <div class="row">
    <div class="inline-block">
      <div class="dropdown">
        <button type="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="true" class="btn btn-primary">Dropdown</button>
        <ul class="dropdown-menu dropdown-menu-end">
          <li>
            <button type="button" class="dropdown-item" data-bs-toggle="modal" data-bs-target="#test">
              Launch demo modal
            </button>
          </li>
        </ul>
      </div>
    </div>
  </div>
</div>

<!-- Modal移到下拉菜单外部 -->
<div class="modal fade" id="test" tabindex="-1">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title">Modal title</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      <div class="modal-body">
        ...
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>

内容的提问来源于stack exchange,提问作者Jaroslav Klimčík

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:48:04