【问题标题】:Bootstrap v3.3.6 Dropdown not working with mobile menuBootstrap v3.3.6 下拉菜单不适用于移动菜单
【发布时间】:2016-09-12 02:23:06
【问题描述】:

几天以来我一直在尝试解决这个问题。我找到了很多解决方案,但对我没有任何作用。 我正在使用引导程序 3.3.6,我想使用下拉菜单。 该代码在桌面屏幕上运行良好,但在移动屏幕上却不行。

这是一个截图:

当我点击“产品”时,全局菜单消失,我找不到子菜单。

这是我的代码:

<!-- Navigation  -->
<nav class="navbar navbar-default navbar-fixed-top shadoww">
   <div class="container">
          <div class="navbar-header page-scroll">
                    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
                        <span class="sr-only">Toggle navigation</span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </button>
                    <a class="navbar-brand page-scroll" href="#page-top" style="width:250px;"><img src="img/logo.png" width="60%" style="margin-top: -4%;"></a>
                </div>
            <!-- Collect the nav links, forms, and other content for toggling -->
        <nav class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <ul class="nav navbar-nav">
                   <li class="hidden">
                      <a href="#page-top"></a>
                   </li>
                   <li>
                      <a id="translate0" class="page-scroll move" href="#home">Home</a>
                   </li>
                   <li class="dropdown">
                        <a id="translate01" href="#" class="dropdown-toggle move multiselect" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Product<span class="caret"></span></a>
                        <ul class="dropdown-menu" role="menu">
                           <li><a class="page-scroll move" href="#product">Description</a></li>
                           <li role="separator" class="divider"></li>
                           <li><a id="translate39" class="page-scroll move" href="#compat">Compatibility</a></li>
                        </ul>    
                   </li>
                   <li><a id="translate02" class="page-scroll move" href="#diapo">Gallery</a></li>
                   <li><a id="translate03" class="page-scroll move" href="#team">Founder</a></li>
                   <li><a class="page-scroll move" href="#contact">Contact</a></li>
                   <li><a id="popup" class="move" href="javascript://">Shop</a></li>
                   <li><a class="forum move" href="/forum/index.php" target="_blank">Forum</a></li>
                </ul>
                <ul class="nav navbar-nav navbar-right">
                   <li>
                   <a id="flagA" class="navbar-brand" href="javascript:doTranslate('fr')" style="width:80px;"><img id="flag0" onclick="javascript:changeImage('fra')" src="img/France-Flag-50.png" class='changer' width="55%" style="margin-top: -4%;"></a>
                   </li>
                   <li>
                   <a id="flagB" class="navbar-brand" style="width:80px;"><img id="flag1" src="img/UK-Flag.png" class='changer' width="55%" style="margin-top: -4%;"></a>
                   </li>
                </ul>
        </nav>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"></div>
        <div id="successn"></div>
</nav>

我已经尝试过stopPropagation 解决方案,但我认为这不是一个合适的解决方案。我也试过this solution但是没办法,还是一样的反应。

有人有其他想法吗? (我知道,关于这个问题有很多问题......)谢谢

【问题讨论】:

  • 这是你的完整代码吗?
  • 不,只是菜单部分(不包括品牌链接)。当然,标题中有一个css文件和&lt;link&gt;用于引导,最后有&lt;script src="js/bootstrap.min.js"&gt;&lt;/script&gt;

标签: html mobile drop-down-menu twitter-bootstrap-3


【解决方案1】:

如果您使用的是 Bootstrap v5.1,那么以下内容可能会为您解决问题 -

<nav ...
<button 
    class="navbar-toggler navbar-toggler-right"
    type="button"
    data-bs-toggle="collapse"
    data-bs-target="#navbarNavDropdown"
    aria-controls="navbarNavDropdown"
    aria-expanded="false"
    aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span></button>
<div class="collapse navbar-collapse" id="navbarNavDropdown">
...
</nav>

在以上 3 个位置将 navbarResponsive 替换为 navbarNavDropdown 就可以了。

【讨论】:

    【解决方案2】:

    我遇到了一个确切的问题,它来自 bootstrap.css 的 CDN 版本。 JS 或 CSS 需要进行任何更改,请确保为您的导航栏模板使用正确的版本。

    【讨论】:

      【解决方案3】:

      不要将 bootstrap.min.js 保留在头文件或页脚文件中,只需保留在您想要下拉的文件中即可。

      示例: 将 bootstrap.min.js 保留在 bootom 的 index.php 中。然后在移动版中检查它。

      【讨论】:

        【解决方案4】:

        我的问题是,在我的网站的移动版本中,我一点击主链接,下拉菜单就会出现又消失。我所做的有点妥协,但它确实有效。文件 bootstrap-dropdown.js 有一个名为 clearMenus 的函数,它是关闭下拉菜单的函数。我所做的是确保该 hack 不适用于非移动设备。现在发生的情况是,一旦您单击下拉链接,它就不会关闭。这对移动设备来说是个好主意,但对平板电脑不利。

         function clearMenus() {
            $(toggle).each(function () { var isMobile = false;
                // device detection 
        if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent) 
            || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0,4))) 
        { isMobile = true; }
           if(! isMobile) { getParent($(this)).removeClass('open')
         } })
          }
        

        【讨论】:

          【解决方案5】:

          我想我终于在这里找到了解决方案:How to make twitter bootstrap menu dropdown on hover rather than click

          使用鼠标(相对)容易获得链接,我还没有尝试过使用真正的手机。但这是我找到的最佳解决方案。

          1) 在css文件中添加这些行。

          ul.nav li.dropdown:hover > ul.dropdown-menu {
          display: block;    
          }
          @media (min-width: 979px) {
            ul.nav li.dropdown:hover > ul.dropdown-menu {
              display: block;
            }
          }
          

          2)在html文件中删除这个类:

          <b class="caret"></b>    <-- remove this line
          

          【讨论】:

          • 它在小屏幕桌面上工作。但仍然无法在带有触摸屏的移动设备上工作。请帮助。从最近几天开始,我就被困在这些设备上。
          • 我暂时没有找到更好的解决方案,但如果我找到了,我会分享。
          • @Guillaume 我有一个类似的问题,原来是col-xs-10 包裹了我的下拉菜单。出于某种原因,一旦我删除了这个包装类,问题就消失了!在您的情况下,它可能是也可能不是那个特定的类,但是如果您尝试尽可能多地删除父元素上的类并查看它是否适用于移动设备,那么这可能会揭示您是否对父类有类似的问题。
          【解决方案6】:

          我发现的错误。

          我。 data-toggle="collapse" data-target=".navbar-collapse" 的属性在哪里?

          DEMO

          【讨论】:

          • 感谢您的帮助 :) 我有 data-target="#bs-example-navbar-collapse-1" 但与 data-target=".navbar-collapse" 相同,菜单适用于大尺寸但不适用于小宽度(如移动设备)
          • @Guillaume 可以给我看另一个截图或你的网站链接吗?更容易调试。
          • 是的,你当然可以在这里看到:this link
          • @Guillaume 我有同样的问题,如果你有钥匙请指导。
          • @Raham 不抱歉,我找到的唯一解决方法是我的答案
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-20
          • 2019-01-04
          • 2023-03-10
          • 2021-08-16
          • 1970-01-01
          相关资源
          最近更新 更多