【问题标题】:Problem with Bootstrap 4 Navbar Dropdown changing other navigation items locationsBootstrap 4 Navbar Dropdown 更改其他导航项位置的问题
【发布时间】:2019-03-08 02:20:50
【问题描述】:

我的网站导航栏有问题。当我展开导航栏时它工作正常,但是当它处于折叠状态(对于移动设备)时,导航栏中的下拉项会将其他元素推到左侧并忽略代码(下拉菜单右)用于制作下拉右对齐。

我不确定它为什么会这样。如果有人能找到解决方案,将不胜感激。

如果没有解决方案,我也很想听听替代方案。

Codepen

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<header class="navbar navbar-expand-sm bg-dark navbar-dark fixed-top border-bottom border-primary" id="main-nav">
  <a href="index.html" class="navbar-brand">Project Name</a>

  <button class="navbar-toggler" data-toggle="collapse" data-target="#navbarCollapse">
            <span class="navbar-toggler-icon"></span>
        </button>
  <div class="collapse navbar-collapse" id="navbarCollapse">
    <ul class="navbar-nav flex-row d-sm-flex justify-content-around ml-sm-auto">
      <li class="nav-item btn">
        <a href="index.html" class="nav-link active"><i class="fas fa-home"></i> Home</a>
      </li>
      <li class="nav-item btn">
        <a href="documentation/current/#" class="nav-link"><i class="fas fa-book"></i> Documentation</a>
      </li>
      <li class="nav-item dropdown btn">
        <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
          <i class="fas fa-globe"></i> English
        </a>
        <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">

          <h1 class="dropdown-header">
            <i class="fas fa-language fa-lg"></i> Language
          </h1>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item active" href="#">English</a>
          <a class="dropdown-item disabled" href="#">Other Languages</a>
        </div>
      </li>
    </ul>
  </div>
</header>

<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>

【问题讨论】:

    标签: html twitter-bootstrap bootstrap-4


    【解决方案1】:

    设置dropdown-menu的样式

    .dropdown-menu{ position:absolute !important;}
    

    (而不是!important,我建议将样式直接应用到div 以优先于Bootstrap 的默认css)

    【讨论】:

    • Flex 行已完成,这样我就可以水平显示导航项,而不是垂直显示正常。我不希望任何项目右对齐。我希望下拉列表右对齐显示其列出的项目,因为目前它在移动视图中显示时左对齐并被裁剪显示区域。
    • Erm.. 你运行我的例子了吗?它保持水平视图而不是垂直视图,并使列表垂直而不是在移动视图中被剪裁
    • 我确实运行了您的示例,并且在折叠的移动视图中,导航项显示为垂直而不是水平(在向下的列表中,而不是并排显示)。这就是我想通过添加 Flex-Row 来改变的。
    • 啊,我错了。我以为你指的是导航栏本身,而不是里面的那个。我很快就会想出一个解决方案
    • @GerhardPlesch 我已经更新了答案。希望这就是你想要的^^
    【解决方案2】:

    这对我有用

    #dropdown-menu-align-right.dropdown-toggle::after{
      margin:0px !important;  
      vertical-align: initial !important;  
    }
    
    .dropdown-toggle[aria-expanded="true"]:after{
      position:initial !important;
      display:inline !important;
      padding-right: 0px !important;  
      padding-bottom: 0px !important;
      padding-top: 0px !important;
      width: 0px !important;
      min-width: 0rem !important;
      padding-left: 4px !important;
      margin:0ox !important;
      
    }
    
    .dropdown-toggle[aria-expanded="false"]:before{
      padding-left: 4px !important;
      padding-right: 0px !important;
      padding-bottom: 0px !important;
      padding-top: 0px !important;
      position: initial !important;
      display: inline !important;  
      width: 0px !important;
      min-width: 0rem !important;  
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-27
      • 1970-01-01
      • 1970-01-01
      • 2018-07-19
      • 1970-01-01
      • 2019-05-29
      • 2016-07-17
      • 2023-04-08
      相关资源
      最近更新 更多