【问题标题】:bootstrap navbar overlap content on small screen size小屏幕尺寸上的引导导航栏重叠内容
【发布时间】:2014-10-02 18:21:55
【问题描述】:

您好,我正在使用带有两种不同导航栏的引导程序,一种用于大屏幕,一种用于手机大小的屏幕。

网址:http://www.gamingonlinux.com/

两个导航栏的代码:

<!-- navbar -->
<div class="hidden-xs">
    <div class="container">
        <div class="navbar navbar-fixed-top {:inverse}" role="navigation">
          <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                  <span class="sr-only">Toggle navigation</span>
                  <span class="icon-bar"></span>
                  <span class="icon-bar"></span>
                  <span class="icon-bar"></span>
                </button>
              </div>
            <div class="collapse navbar-collapse">
                <ul class="nav navbar-nav">
                    <li><a href="/" style="padding-top: 0px; padding-bottom: 0px;"><img src="/templates/default/images/navbar_logo_{:theme}.png" alt="GamingOnLinux" /></a></li>
                    <li><a href="/">Home</a></li>
                    <li><a href="/donate/">Donate</a></li>
                    <li><a href="/sales/">Sales</a></li>
                    <li><a href="/contact-us/">Submit Tip</a></li>
                    <li><a href="/crowdfunding/">Wiki</a></li>
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Forum <b class="caret"></b></a>
                        <ul class="dropdown-menu" role="menu">
                            <li><a href="/forum/">Forum</a></li>
                            <li><a href="/community/">Community Page</a></li>
                        </ul>
                    </li>
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-user"></span> {:username} <b class="caret"></b></a>
                        <ul class="dropdown-menu" role="menu">
                            {:user_menu}
                        </ul>
                    </li>
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-search"></span><b class="caret"></b></a>
                        <ul class="dropdown-menu" role="menu">
                            <li><form method="get" action="/index.php?module=search" class="navbar-form" role="search">
                    <input type="hidden" name="module" value="search">
                    <input type="text" class="form-control" name="q" placeholder="Search Articles">
                    <input type="submit" style="position: absolute; left: -9999px; width: 1px; height: 1px;"/>
                </form></li>
                        </ul>
                    </li>
                </ul>
            </div>
        </div>
    </div>
</div>
<!-- navbar phone screens -->
<div class="visible-xs">
    <div class="container">
        <div class="navbar navbar-fixed-top {:inverse}" role="navigation">
          <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
            <ul class="nav navbar-nav">
                <li><a href="/">Home</a></li>
            </ul>
            <ul class="nav navbar-nav">
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-search"></span><b class="caret"></b></a>
                    <ul class="dropdown-menu" role="menu">
                        <li><form method="get" action="/index.php?module=search" class="navbar-form" role="search">
                        <input type="hidden" name="module" value="search">
                        <input type="text" class="form-control" name="q" placeholder="Search Articles">
                        <input type="submit" style="position: absolute; left: -9999px; width: 1px; height: 1px;"/>
                        </form>
                        </li>
                    </ul>
                </li>
            </ul>
            <ul class="nav navbar-nav">
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-user"></span><b class="caret"></b></a>
                    <ul class="dropdown-menu" role="menu">
                        {:user_menu}
                    </ul>
                </li>
            </ul>
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                  <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 src="/templates/default/images/navbar_logo_{:theme}.png" alt="GamingOnLinux" /></a>
              </div>
            <div class="collapse navbar-collapse">
                <ul class="nav navbar-nav">
                    <li><a href="/donate/">Donate</a></li>
                    <li><a href="/sales/">Sales</a></li>
                    <li><a href="/contact-us/">Submit Tip</a></li>
                    <li><a href="/crowdfunding/">Wiki</a></li>
                    <li><a href="/forum/">Forum</a></li>
                    <li><a href="/community/">Community Page</a></li>
                </ul>
            </div>
        </div>
    </div>
</div>
<div class="contentwrap">
    <div class="container">
        <div class="add-bottom-margin">
            <!-- image carousel -->
            <div class="carousel slide" data-ride="carousel">
                <!-- Wrapper for slides -->
                 <div class="carousel-inner">
                    {:carousel_list}
                </div>
                <!-- Controls -->
                <a class="left carousel-control" href="#carousel-example-generic" data-slide="prev">
                <span class="glyphicon glyphicon-chevron-left"></span>
                </a>
                <a class="right carousel-control" href="#carousel-example-generic" data-slide="next">
                <span class="glyphicon glyphicon-chevron-right"></span>
                </a>
            </div><!-- /.carousel -->
        </div>

然后这个 JS 代码用于计算“contentwrap”的正确位置,以确保它直接位于导航栏之后,并且它在我们的普通导航栏上有效,但奇怪的是在小屏幕导航栏上无效:

jQuery(document).ready(function() {
            $('.contentwrap').css({
                'margin-top': (($('.navbar-fixed-top').height()) + 1) + 'px'
            });
            $(window).resize(function() {
                $('.contentwrap').css({
                    'margin-top': (($('.navbar-fixed-top').height()) + 1) + 'px'
                });
            });
});  

我是否遗漏了一些明显的东西,为什么它在 visible-xs 导航栏上不起作用?

JS 代码来自这篇帖子twitter bootstrap navbar fixed top overlapping site 供参考,少数人使用它。

【问题讨论】:

    标签: jquery html css twitter-bootstrap


    【解决方案1】:

    感谢“tmg”的评论,我设法修复了它

    我给每个导航栏一个id,然后把它们加在一起,很简单,而且效果很好。

    $('.contentwrap') .css({'margin-top': (($('#nav-small').height() + $('#nav-normal').height()) + 1 )+'px'});
    $(window).resize(function()
    {
            $('.contentwrap') .css({'margin-top': (($('#nav-small').height() + $('#nav-normal').height()) + 1 )+'px'});
    });
    

    【讨论】:

      【解决方案2】:

      不需要任何 jQuery 胶水的建议:

      • 将 navbar-fixed-top 更改为 navbar-top 并且不要放置导航栏 在 .container 中。

      • 那么内容应该在导航栏之后开始。 (调整导航栏和内容 相应的边距)

      【讨论】:

      • 就像我对另一个删除他答案的人说的那样,更改导航栏类型不是解决方案。
      • 为什么会这样?你不能访问html?您现在实际上正在使用 jquery 更改引导程序声明...
      • 也许我想使用我满意的导航栏类型?
      • 好吧,你显然不高兴,因为你有问题。 “固定”使内容从窗口顶部开始,而不是在导航栏之后。您不必更改“类型”,您只需更改位置声明。
      【解决方案3】:
      $('.navbar-fixed-top').height()
      

      这个类有 2 个元素。 上面的代码计算了相同屏幕情况下第一个元素的高度为零

      计算元素高度的汇总

      var calcHeights = function (elements) {
                  var r = 0;
                  elements.each(function () {
                      r += $(this).height();
                  });
                  return r;
              }
      

      用calcHeights($('.navbar-fixed-top'))代替$('.navbar-fixed-top').height()

      【讨论】:

      • 是的,我刚刚意识到这可能是问题所在,有什么好的解决方法?
      • 只需添加他们的身高并使用摘要。
      • 我有一个修补程序并且工作正常,我只是给他们每个人一个不同的 id 并将它们加在一起! :D 非常感谢!
      • 我添加了我自己的答案,它更简单,使用更少的 JS,但你的评论让我明白了谢谢!
      猜你喜欢
      • 2017-12-21
      • 2021-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-13
      • 1970-01-01
      • 2016-05-12
      相关资源
      最近更新 更多