Bootstrap导航栏下拉子菜单在折叠模式下不起作用

如何解决Bootstrap导航栏下拉子菜单在折叠模式下不起作用

我正在建立一个新网站,而我的导航栏卡住了。

我面临的问题是子菜单(第二级下拉菜单)没有以折叠模式显示。如果您按下它以像正常下拉菜单一样打开,它的作用就好像它本身是一个链接,而不是打开子菜单。

在全屏模式下,它可以按预期工作,但是悬停而不是单击。

.navbar {
  border-top-left-radius: 15px;
  border-bottom-left-radius: 15px;
  border-top-right-radius: 15px;
  border-bottom-right-radius: 15px;
  margin: 20px 50px 20px 50px;
}

.navbar {
  background-color: #343a40;
}

.navbar .navbar-brand {
  color: #4d8de5;
}

.navbar .navbar-brand:hover,.navbar .navbar-brand:focus {
  color: #1a71e8;
}

.navbar .navbar-text {
  color: #4d8de5;
}

.navbar .navbar-text a {
  color: #1a71e8;
}

.navbar .navbar-text a:hover,.navbar .navbar-text a:focus {
  color: #1a71e8;
}

.navbar .navbar-nav .nav-link {
  color: #4d8de5;
  border-radius: .25rem;
  margin: 0 0.25em;
}

.navbar .navbar-nav .nav-link:not(.disabled):hover,.navbar .navbar-nav .nav-link:not(.disabled):focus {
  color: #1a71e8;
}

.navbar .navbar-nav .dropdown-menu {
  background-color: #343a40;
  border: 2px solid #4d535a;
}

.navbar .navbar-nav .dropdown-menu .dropdown-item {
  color: #4d8de5;
}

.navbar .navbar-nav .dropdown-menu .dropdown-item:hover,.navbar .navbar-nav .dropdown-menu .dropdown-item:focus,.navbar .navbar-nav .dropdown-menu .dropdown-item.active {
  color: #1a71e8;
  background-color: #4d535a;
}

.navbar .navbar-nav .dropdown-menu .dropdown-divider {
  border-top-color: #4d535a;
}

.navbar .navbar-nav .nav-item.active .nav-link,.navbar .navbar-nav .nav-item.active .nav-link:hover,.navbar .navbar-nav .nav-item.active .nav-link:focus,.navbar .navbar-nav .nav-item.show .nav-link,.navbar .navbar-nav .nav-item.show .nav-link:hover,.navbar .navbar-nav .nav-item.show .nav-link:focus {
  color: #1a71e8;
  background-color: transparent;
}

.navbar .navbar-toggle {
  border-color: #4d535a;
}

.navbar .navbar-toggle:hover,.navbar .navbar-toggle:focus {
  background-color: #4d535a;
}

.navbar .navbar-toggle .navbar-toggler-icon {
  color: #4d8de5;
}

.navbar .navbar-collapse,.navbar .navbar-form {
  border-color: #4d8de5;
}

.navbar .navbar-link {
  color: #4d8de5;
}

.navbar .navbar-link:hover {
  color: #1a71e8;
}

@media (max-width: 575px) {
  .navbar-expand-sm .navbar-nav .show .dropdown-menu .dropdown-item {
    color: #4d8de5;
  }
  .navbar-expand-sm .navbar-nav .show .dropdown-menu .dropdown-item:hover,.navbar-expand-sm .navbar-nav .show .dropdown-menu .dropdown-item:focus {
    color: #1a71e8;
  }
  .navbar-expand-sm .navbar-nav .show .dropdown-menu .dropdown-item.active {
    color: #1a71e8;
    background-color: #4d535a;
  }
}

@media (max-width: 767px) {
  .navbar-expand-md .navbar-nav .show .dropdown-menu .dropdown-item {
    color: #4d8de5;
  }
  .navbar-expand-md .navbar-nav .show .dropdown-menu .dropdown-item:hover,.navbar-expand-md .navbar-nav .show .dropdown-menu .dropdown-item:focus {
    color: #1a71e8;
  }
  .navbar-expand-md .navbar-nav .show .dropdown-menu .dropdown-item.active {
    color: #1a71e8;
    background-color: #4d535a;
  }
}

@media (max-width: 991px) {
  .navbar-expand-lg .navbar-nav .show .dropdown-menu .dropdown-item {
    color: #4d8de5;
  }
  .navbar-expand-lg .navbar-nav .show .dropdown-menu .dropdown-item:hover,.navbar-expand-lg .navbar-nav .show .dropdown-menu .dropdown-item:focus {
    color: #1a71e8;
  }
  .navbar-expand-lg .navbar-nav .show .dropdown-menu .dropdown-item.active {
    color: #1a71e8;
    background-color: #4d535a;
  }
}

@media (max-width: 1199px) {
  .navbar-expand-xl .navbar-nav .show .dropdown-menu .dropdown-item {
    color: #4d8de5;
  }
  .navbar-expand-xl .navbar-nav .show .dropdown-menu .dropdown-item:hover,.navbar-expand-xl .navbar-nav .show .dropdown-menu .dropdown-item:focus {
    color: #1a71e8;
  }
  .navbar-expand-xl .navbar-nav .show .dropdown-menu .dropdown-item.active {
    color: #1a71e8;
    background-color: #4d535a;
  }
}

.navbar-expand .navbar-nav .show .dropdown-menu .dropdown-item {
  color: #4d8de5;
}

.navbar-expand .navbar-nav .show .dropdown-menu .dropdown-item:hover,.navbar-expand .navbar-nav .show .dropdown-menu .dropdown-item:focus {
  color: #1a71e8;
}

.navbar-expand .navbar-nav .show .dropdown-menu .dropdown-item.active {
  color: #1a71e8;
  background-color: #4d535a;
}

.nav-item.active {
  border-top-left-radius: 5px;
  border-bottom-left-radius: 5px;
  border-top-right-radius: 5px;
  border-bottom-right-radius: 5px;
  border: 2px solid #1a71e8;
}

.btn-outline-success,.btn-outline-success:active,.btn-outline-success:visited {
  background-color: transparent !important;
  border-color: #4d8de5;
  color: #4d8de5;
}

.btn-outline-success:hover {
  background-color: transparent !important;
  border-color: #1a71e8;
  color: #1a71e8;
}

.btn-outline-success:focus {
  box-shadow: 0 0 0 .2rem rgb(26,113,232)
}

.btn-outline-success.disabled,.btn-outline-success:disabled {
  color: #1a71e8;
  background-color: transparent
}

.btn-outline-success.dropdown-toggle {
  color: #4d8de5;
  background-color: #1a71e8;
  border-color: #1a71e8
}

.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus {
  box-shadow: 0 0 0 .2rem rgb(26,232)
}

@media (min-width: 992px) {
  .dropdown-menu .dropdown-toggle:after {
    border-top: .3em solid transparent;
    border-right: 0;
    border-bottom: .3em solid transparent;
    border-left: .3em solid;
  }
  .dropdown-menu .dropdown-menu {
    margin-left: 0;
    margin-right: 0;
  }
  .dropdown-menu li {
    position: relative;
  }
  .nav-item .submenu {
    display: none;
    position: absolute;
    left: 100%;
    top: -7px;
  }
  .nav-item .submenu-left {
    right: 100%;
    left: auto;
  }
  .dropdown-menu>li:hover {
    background-color: #f1f1f1
  }
  .dropdown-menu>li:hover>.submenu {
    display: block;
  }
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="css/style.css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>

<div id="page">
  <nav class="navbar navbar-expand-lg navbar-dark bg-dark navbar-custom">
    <a class="navbar-brand" href="#"><img src="images/logo5.png" alt="" style="width: 175px"></a>
    <button class="navbar-toggler collapsed" type="button" data-toggle="collapse" data-target="#navbarsExample09" aria-controls="navbarsExample09" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
    <div class="navbar-collapse collapse" id="navbarsExample09" style="">
      <ul class="navbar-nav mr-auto">
        <li class="nav-item active">
          <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
        </li>
        <li class="nav-item dropdown">
          <a class="nav-link  dropdown-toggle" href="#" data-toggle="dropdown"> Platform </a>
          <ul class="dropdown-menu dropdown-menu-right">
            <li><a class="dropdown-item" href="#"> Dropdown item 1</a></li>
            <li><a class="dropdown-item" href="#"> Dropdown item 2 </a></li>
            <li><a class="dropdown-item dropdown-toggle" href="#"> Dropdown item 3 </a>
              <ul class="submenu submenu-right dropdown-menu" data-toggle="dropdown">
                <li><a class="dropdown-item" href="">Submenu item 1</a></li>
                <li><a class="dropdown-item" href="">Submenu item 2</a></li>
                <li><a class="dropdown-item" href="">Submenu item 3</a></li>
                <li><a class="dropdown-item" href="">Submenu item 4</a></li>
              </ul>
            </li>
            <li><a class="dropdown-item" href="#"> Dropdown item 4 </a></li>
          </ul>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Add new game</a>
        </li>
      </ul>
      <ul class="navbar-nav ml-auto">
        <form class="form-inline my-2 my-lg-0">
          <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
          <button class="btn btn-outline-success my-2 my-sm-0" style="margin-right: 10px" type="submit">Search</button>
        </form>
        <li class="nav-item dropdown">
          <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                        Account
                    </a>
          <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
            <a class="dropdown-item" href="#">Action</a>
            <a class="dropdown-item" href="#">Another action</a>
            <div class="dropdown-divider"></div>
            <a class="dropdown-item" href="#">Something else here</a>
          </div>
        </li>
      </ul>
    </div>
  </nav>
</div>

编辑:我的JavaScript出现了问题。由于评论中的链接,对我有用的版本如下:


$( document ).ready( function () {
    $( '.dropdown-menu a.dropdown-toggle' ).on( 'click',function ( e ) {
        var $el = $( this );
        var $parent = $( this ).offsetParent( ".dropdown-menu" );
        if ( !$( this ).next().hasClass( 'show' ) ) {
            $( this ).parents( '.dropdown-menu' ).first().find( '.show' ).removeClass( "show" );
        }
        var $subMenu = $( this ).next( ".dropdown-menu" );
        $subMenu.toggleClass( 'show' );

        $( this ).parent( "li" ).toggleClass( 'show' );

        $( this ).parents( 'li.nav-item.dropdown.show' ).on( 'hidden.bs.dropdown',function ( e ) {
            $( '.dropdown-menu .show' ).removeClass( "show" );
        } );

        if ( !$parent.parent().hasClass( 'navbar-nav' ) ) {
            $el.next().css( { "top": $el[0].offsetTop,"left": $parent.outerWidth() - 4 } );
        }

        return false;
    } );
} );

解决方法

如果您可以选择使用JavaScript解决方案,我想this answer of similar question会为您提供所需的东西。

这是未经修改的JavaScript代码段:

$('.dropdown-menu a.dropdown-toggle').on('click',function(e) {
  if (!$(this).next().hasClass('show')) {
    $(this).parents('.dropdown-menu').first().find('.show').removeClass('show');
  }
  var $subMenu = $(this).next('.dropdown-menu');
  $subMenu.toggleClass('show');


  $(this).parents('li.nav-item.dropdown.show').on('hidden.bs.dropdown',function(e) {
    $('.dropdown-submenu .show').removeClass('show');
  });


  return false;
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-