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

Bootstrap5导航栏下拉菜单移动端拉伸导航栏问题求解决方案

Bootstrap 5 移动端导航栏下拉菜单撑高问题修复

问题说明

使用Bootstrap 5创建的网站导航栏,桌面端下拉菜单功能运行完全正常,但在移动端视图下触发下拉菜单时会拉伸导航栏,显示效果不美观,需要实现移动端下拉菜单悬浮展示,不会撑高导航栏。

相关截图

  • 问题对应截图:问题截图
  • 期望实现效果截图:期望效果截图
  • 实际错误效果截图:错误截图

现有代码

HTML代码

<!-- Bootstrap-5 -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">

<!-- Body -->
<nav class="navbar navbar-expand-lg navbar-light" style="background-color: #025;">
  <div class="container-fluid">
    <a class="navbar-brand text-white" href="{% url 'accounts:home' %}" style="font-size: 25px; font-weight:600;">
      <img src="{% static 'image/logo/logo.png' %}" class="d-inline-block align-text-center logo-img" style="margin-left: 150px; height: 40px;"> BuyBuy
    </a>

    <div class="navbar-nav dekstop_search">
      <form class="form-inline" action="{% url 'products:search' %}">
        {% csrf_token %}
        <input class="search" type="search" placeholder="Search..." aria-label="Search" name="search" required>
        <button class="btn sea btn-outline-primary" type="submit" value="Search"><i class="fas fa-search text-white"></i></button>
      </form>
    </div>

    <!-- Links -->
    {% if user.is_authenticated %}

    <!-- Right -->
    <div class="navbar-nav">
      <a href="#" class="nav-link text-white text-center"><i class="fas fa-heart"></i>
          <span class="badge" style="background-color: white; color:#025; padding:3px;">{{wish|length}}</a>
      <a href="#" class="nav-link text-white text-center"><i class="fas fa-bell"></i>
            <span class="badge" style="background-color: white; color:#025; padding:3px;">{{wish|length}}</a>
      <a class="nav-link text-white" href="{% url 'orders:cart' %}"><i class="fas fa-shopping-cart"></i>
            <span class="badge" style="background-color: white; color:#025; padding:3px;">{{request.session.cart.keys|length}}</span></a>
      <div class="dropdown">
        <img class="nav-link dropdown-toggle" href="#" id="navbarDarkDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false" style="height:50px; border-radius: 50%; margin-right:150px;" src="{{ user.profile.profile_pic.url }}">
        <div class="dropdown-menu drop" aria-labelledby="navbarDropdown">
          <li class="item text-center" style="font-weight: bolder;"> Hi <strong style="color: #B9C04C; cursor:default;"> {{ user.username }} 👋 </strong></li>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item text-center" href="{% url 'accounts:profile'  request.user.username %}">My Account</a>
          <a class="dropdown-item text-center" href="{% url 'orders:myorders' %}">My Order</a>
          <a class="dropdown-item text-center" href="#">My Address</a>
          <a class="dropdown-item text-center" href="#">My Cart</a>
          <a class="dropdown-item text-center" href="{% url 'accounts:logout' %}">Log Out</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item text-center" href="#">Settings</a>
          <a class="dropdown-item text-center" href="#">Help</a>
          <a class="dropdown-item text-center" href="#">Privacy Policy</a>
        </div>
      </div>
    </div>
    {% else %}
    <div class="navbar-nav">
      <a class="nav-link text-white" href="{% url 'orders:cart' %}"><i class="fas fa-shopping-cart"></i>
            <span class="badge" style="background-color: white; color:#025; padding:3px;">{{request.session.cart.keys|length}}</span></a>
      <a class="nav-link" href="{% url 'accounts:login' %}"><button type="button" class="btn btn-outline-primary text-white">Log In</button></a>
    </div>
    {% endif %}
  </div>
</nav>

自定义CSS代码

.drop{
  position: absolute !important;
  left: auto !important;
  right: 0 !important;
}

修改方案

问题根源是下拉菜单的父容器dropdown没有设置相对定位作为定位上下文,导致移动端下绝对定位失效,下拉菜单留在文档流内撑开导航栏。直接在自定义CSS中添加以下样式即可解决:

/* 给下拉菜单父容器设置相对定位,作为绝对定位的参照基准 */
.dropdown {
  position: relative !important;
}

/* 移动端适配调整 */
@media (max-width: 991px) {
  .drop {
    /* 调整右侧偏移避免菜单超出屏幕,可根据实际需求调整数值 */
    right: 10px !important;
    /* 提高层级确保下拉菜单浮在所有元素上方 */
    z-index: 1055 !important;
  }
  /* 额外优化:移动端下取消logo和头像的固定边距,避免溢出屏幕 */
  .logo-img {
    margin-left: 10px !important;
  }
  .dropdown-toggle.nav-link {
    margin-right: 10px !important;
  }
}

修改后下拉菜单会脱离文档流悬浮展示,不会再撑高导航栏。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:45:02