Bootstrap导航栏重叠体内容

时间:2017-02-01 11:39:48

标签: css html5 twitter-bootstrap nav

我的Bootstrap导航栏存在一些问题。

  1. 我在导航栏中有很多标签,因此标题会在单独的行上显示,而标签位于第二行,看起来并不好。

  2. 因为导航栏占用2行所以它会在我的页面上隐藏一些内容,例如行上方有一个标题"请选择群集平均文件...."在附加的图像中,但你看不到它,因为导航栏重叠并隐藏它。

  3. 如何解决此问题?我希望导航栏只显示有限的标签,尽可能在一行导航栏中显示,并在汉堡菜单中隐藏其他标签。因此它不会隐藏我的身体内容并且看起来也很好。

  4. P.S:当我将窗口调整为移动视图时,这些问题不会发生,因为会出现汉堡包菜单。

    完整窗口

    enter image description here

    移动视图

    enter image description here

    并且导航栏的代码默认使用ASP.NET核心Web应用程序,我只更改了它的主题为"反向"

    以下是代码

    <div class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <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>
                <a asp-area="" asp-controller="Home" asp-action="Index" class="navbar-brand">ChromSACT</a>
            </div>
            <div class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <li><a asp-area="" asp-controller="Home" asp-action="Index" class="aa"><span class="glyphicon glyphicon-home" style="margin-right:6px;"></span>Home</a></li>
                    <li><a asp-area="" asp-controller="Home" asp-action="Cell">Input</a></li>
                    <li><a asp-area="" asp-controller="Home" asp-action="CellResult">Marks</a></li>
                    <li><a asp-area="" asp-controller="Home" asp-action="CellResultRegions">Regions</a></li>
                    <li><a asp-area="" asp-controller="Home" asp-action="ClusterBits">Cluster Bits</a></li>
                    <li><a asp-area="" asp-controller="Home" asp-action="RegionsMatrix">Regions Matrix</a></li>
                    <li><a asp-area="" asp-controller="Home" asp-action="MarksMatrix">Marks Matrix</a></li>
                    <li><a asp-area="" asp-controller="Home" asp-action="Compare">Compare</a></li>
                    <li><a asp-area="" asp-controller="Home" asp-action="About"><span class="glyphicon glyphicon-alert" style="margin-right:6px;"></span>About</a></li>
                    <li><a asp-area="" asp-controller="Home" asp-action="Contact"><span class="glyphicon glyphicon-envelope" style="margin-right:6px;"></span>Contact</a></li>
                    <li><button data-toggle="modal" data-target="#myModal" class="btn navbar-btn btn-group-sm"><span class="glyphicon glyphicon-info-sign" style="margin-right:6px;"></span>Instructions</button></li>
    
                </ul>
            </div>
        </div>
    </div>
    <div class="container body-content" >
        @RenderBody()
        <hr />
        <footer>
            <p>&copy; 2016 - ChromSACT</p>
        </footer>
    </div>
    

2 个答案:

答案 0 :(得分:10)

根据bootstrap navbar-fixed-top docs:

需要身体填充

  

固定的导航栏将覆盖您的其他内容,除非您添加   填充到顶部。尝试自己的价值观或使用我们的   下面的片段。提示:默认情况下,导航栏高50像素。

body { padding-top: 70px; }
  

确保在核心Bootstrap CSS之后包含此内容。

我认为如果非移动视口需要两行,您可以设置

@media screen and (min-width: 768px) {
    body { padding-top: 100px; }
}

答案 1 :(得分:0)

我在许多具有不同主题和样式的不同引导站点上工作。在更改样式以满足客户要求时保持导航栏填充正确是一种痛苦。我为 Bootstrap 4 提出了这个解决方案。在导入主题和引导程序后,您可以将其放入 scss 文件中。

body {
    padding-top: $navbar-padding-y + $nav-link-height + $navbar-padding-y;
}