没有导航栏元素的引导导航切换

Posted

技术标签:

【中文标题】没有导航栏元素的引导导航切换【英文标题】:Bootstrap nav toggle without navbar element 【发布时间】:2013-12-06 13:50:07 【问题描述】:

是否可以在不使用默认导航的所有标记的情况下创建切换按钮?

我只想创建带有折叠功能的简单菜单。例如:

<div class="navigation">
    <ul id="nav-to-collapse">
       <li><a href=""></a></li>
       <li><a href=""></a></li>
       <li><a href=""></a></li>
    </ul>

    <a href="#" class="toggle" data-toggle="collapse" data-target="#nav-to-collapse">
</div>

这可能吗?这是我第一次使用 Bootstrap (3),它真的很混乱。我不想使用所有导航栏类,因为这样我就必须覆盖所有导航栏样式才能创建我想要的简单菜单。

编辑:我设法在没有所有无用导航栏类的情况下创建了切换,但是当导航高度发生更改时,切换动画存在问题。这是一个说明问题的 jsfiddle:Jsfiddle demo

【问题讨论】:

【参考方案1】:

Bootstrap 的切换函数是一个 javascript 函数,当用户单击具有 data-toggle="collapse" 属性的元素时会触发该函数。如果还没有指定 data-target="" id,则用户单击的元素将被折叠。但是,在这一点标记中:

<a href="#" class="toggle" data-toggle="collapse" data-target="#nav-to-collapse">

data-target="" 属性设置为 #nav-to-collapse 的 id。所以 Bootstrap 的折叠插件会寻找一个 id="nav-to-collapse" 并在那个 id 上触发它的功能。

所以在这个标记中:

<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="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">Project name</a>
        </div>
        <div class="collapse navbar-collapse">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">Home</a></li>
            <li><a href="#about">About</a></li>
            <li><a href="#contact">Contact</a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </div>

data-target 设置为 .navbar-collapse 的类,这将使该元素下的所有内容都折叠。

【讨论】:

好的,我设法让它在没有所有无用的导航栏类的情况下工作。但是有一个问题,当我将 css 中的导航高度设置为除 auto 之外的任何其他值时,下推正文内容的折叠动画不起作用。我创建了一个小提琴,所以你可以明白我的意思:jsfiddle.net/cfcZY。当您取消注释 nav height: 声明时,它会中断。 那是因为你给它一个静态高度。通过将该容器的高度设置为 100 像素,它将扩展为 100 像素,但不会更多。通过将其设置为自动,容器的高度将扩大以为容器内的所有内容腾出空间。如果您只需要它扩展到某个高度,则必须同时设置容器的高度,然后确保您的所有内容都适合该容器(例如,通过更改导航链接的字体大小)。 是的,虽然它会在导航下方创建新的 div 并将链接放在那里。我通过使用 min-height 来修复它:)【参考方案2】:

通过在导航元素上使用 min-height 而不是 height 来修复折叠动画问题。这是一个小提琴:http://jsfiddle.net/cfcZY/2/

nav  min-height: 100px; 

【讨论】:

以上是关于没有导航栏元素的引导导航切换的主要内容,如果未能解决你的问题,请参考以下文章

为啥导航栏列表不在右侧?

防止项目在引导程序 4 导航栏切换中折叠

引导两行导航栏(顶行中的链接切换底行中的导航栏),行之间的按钮

引导导航栏菜单与文本重叠

Bootstrap 4 导航栏切换损坏

带有按钮组的引导下拉切换在导航栏中不起作用