单击锚链接时,Bootstrap菜单会闪烁

时间:2016-10-17 14:23:36

标签: css html5 twitter-bootstrap-3 menu navigation

我有一个bootstrap 3菜单。我已在元素中添加data-toggle="collapse" data-target=".navbar-collapse"以强制菜单在移动视图中点击关闭,以防止它占用不动产并阻止菜单上的文字。它工作得很漂亮。

但是,在桌面视图中,单击菜单项时,会导致菜单闪烁并重新加载。在服务器和本地副本中都会发生闪烁,但是当我将代码抛入codepen时不会发生。

我试图将其设置为仅定位移动设备上的崩溃,但我遗漏了一些东西。

HTML:

 <nav class="navbar navbar-default navbar-fixed-top">
    <div class="container-fluid"> 
      <!-- Brand and toggle get grouped for better mobile display -->
      <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#topFixedNavbar1" aria-expanded="false"><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" href="#"><img alt="logo here" class="img-responsive logo" src="logo.png" /> </a></div>
      <!-- Collect the nav links, forms, and other content for toggling -->
      <div class="collapse navbar-collapse" id="topFixedNavbar1">
        <ul class="nav navbar-nav navbar-right">
          <li><a href="#welcome" data-toggle="collapse" data-target=".navbar-collapse">Welcome</a></li>
          <li><a href="#info" data-toggle="collapse" data-target=".navbar-collapse">Information</a></li>
          <li><a href="#housing" data-toggle="collapse" data-target=".navbar-collapse">Registration &amp; Housing</a></li>
          <li><a href="#security" data-toggle="collapse" data-target=".navbar-collapse">Security &amp; Transportation</a></li>
          <li><a href="#contact" data-toggle="collapse" data-target=".navbar-collapse">Contact</a></li>
          <li class="dropdown"><a aria-expanded="false" aria-haspopup="true" class="dropdown-toggle" data-toggle="dropdown" href="#" role="button">Agendas<span class="caret"></span></a>
            <ul class="dropdown-menu">
              <li><a href="#" target="_blank"><i aria-hidden="true" class="fa fa-file-pdf-o">&nbsp;</i>Agenda 1</a></li>
              <li><a href="#" target="_blank"><i aria-hidden="true" class="fa fa-file-pdf-o">&nbsp;</i>Agenda 2</a></li>
            </ul>
          </li>
        </ul>
      </div>
      <!-- /.navbar-collapse --> </div>
    <!-- /.container-fluid --></nav>

导航栏上的CSS自定义:

.nav {
    font-size: 2em;
}
@media (min-width: 960px) {
    body {
    padding-top: 135px; }
.navbar {
    min-height: 125px;
}
}
.navbar-brand {
    margin-left: 5px !important;
    margin-top: -8px;
}
.navbar-default {
    background-color: #fff;
    border-bottom-color: #fff;
}
.navbar-nav {
    margin: 40px 0 -15px;
}

/*Responsive font size on nav */
@media (max-width:1456px) {
.nav {
    font-size: 1.75em;
}
}

@media (max-width:1337px) {
.nav {
    font-size: 1.5em;
}
}

@media (max-width:1219px) {
.nav {
    font-size: 1.3em;
}
}

@media (max-width:1124px) {
.nav {
    font-size: 1.2em;
}
}

@media (max-width:1078px) {
.nav {
    font-size: 1.15em;
}
}

@media (max-width:1053px) {
.nav {
    font-size: 1em;
}
}

@media (max-width:981px) {
.nav {
    font-size: .95em;
}
}

@media (max-width:959px) {
.navbar-nav > li > a {
    padding-top: 1px;
    padding-bottom: 0;
    line-height: 1;
    font-size: 1.4em;
}
.navbar-nav {
    padding-bottom: 18px;
}
/*
.container > .navbar-header, .container-fluid > .navbar-header, .container > .navbar-collapse, .container-fluid > .navbar-collapse {
    min-height: 125px;
}*/
.navbar-nav .open .dropdown-menu {
    position: static;
    float: none;
    width: auto;
    margin-top: 0;
    background-color: transparent;
    border: 0;
    -webkit-box-shadow: none;
    box-shadow: none; }
    .logo {
        height: 42px;}
}

@media (max-width: 962px) {
.navbar-header {
    float: none;
}
.navbar-left, .navbar-right {
    float: none !important;
}
.navbar-toggle {
    display: block;
}
.navbar-collapse {
    border-top: 1px solid transparent;
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.1);
}
.navbar-fixed-top {
    top: 0;
    border-width: 0 0 1px;
}
.navbar-collapse.collapse {
    display: none!important;
}
.navbar-nav {
    float: none!important;
    margin-top: 7.5px;
}
.navbar-nav>li {
    float: none;
}
.navbar-nav>li>a {
    padding-top: 10px;
    padding-bottom: 10px;
}
.collapse.in {
    display: block !important;
}
}

感谢您提供任何帮助或建议!

2 个答案:

答案 0 :(得分:1)

您将data-toggle="collapse" data-target=".navbar-collapse"定位为导航栏本身嵌套的链接,每次单击时都会闪烁。

从链接中删除所有$('.nav a').on('click', function() { $('.navbar-collapse').collapse('hide'); }); 部分,然后添加以下代码:

$('.nav').click('li', function() {
    $('.navbar-collapse').collapse('hide');
}); 

当您单击导航栏内的其中一个链接时,这将关闭导航栏。注意:这是一个bootstrap 3.x解决方案。对于bootstrap 2.x,将单击处理程序添加到列表项而不是链接:

ArrayList<String> items = new ArrayList<String>();

答案 1 :(得分:0)

我解决了一个类似的问题,即导航栏主页上的选项有另一个事件与之相关。因此,当我单击它时,所有导航栏都闪烁了。因此,我在导航栏上添加了一个id并添加了一个jquery块,如下所示:

HTML

<nav id="barraMenu" class="navbar navbar-inverse navbar-fixed-top" role="navigation">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" aria-label="Toggle navigation"
                        data-target="#menuHorizontal" aria-expanded="false" aria-controls="menuHorizontal">
                    <span class="sr-only"> Toggle navigation </span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>

...

</nav>

JS-我添加了if条件,因为它使我的汉堡菜单在我遇到的@media情况下可以工作。

$("#barraMenu").click(function(e) {
   if (window.innerWidth > 753) {
      e.preventBubble();
      e.stopPropagation();
   }
});

我希望它可以帮助某人。谢谢。