簡體   English   中英

使導航丸像引導程序中的導航欄一樣可折疊

[英]makes nav-pills collapsable just like nav-bar in bootstrap

我們正在開發一個應用程序,我們正在使用 twiiter bootstrap 3 我們創建了一個帶有導航葯丸的導航欄

   <ul class="nav nav-pills head-menu">                                                                                                
    <input type="hidden" id="selected_menu_item" value="=$selectedMenuId; ?>" />                               
        <li>
          <a href="#" id="welcome">
          Welcome text ...              
           </a>
        </li>
            <li><a href="#" id="kitchen">Kitchen</a></li>
            <li><a href="#" id="programma" > Programma</a></li>
            <li><a href="#" id="foodart" >foodart text</a></li>
   </ul>                        

任何有引導程序經驗的人都可以幫助我們嗎,如果我們可以像使用導航欄一樣輕松地在縮小尺寸時使這個導航葯丸可折疊和響應?

提前致謝

首先,您需要在菜單折疊后為菜單按鈕添加HTML。

<div class="navbar-header">
    <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>
</div>

然后,您需要將nav-pills包裝在包含Bootstrap崩潰類的div中。

<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
    <ul class="nav nav-pills head-menu">
        <input type="hidden" id="selected_menu_item" value="=$selectedMenuId; ?>" />                               
        <li><a href="#" id="welcome">Welcome text ...</a></li>
        <li><a href="#" id="kitchen">Kitchen</a></li>
        <li><a href="#" id="programma" > Programma</a></li>
        <li><a href="#" id="foodart" >foodart text</a></li>
    </ul>
</div>

然后,您可以將所有這些包裝在一個流體容器和Bootstrap的navbar navbar-default並使用role=navigation

此外,您可以添加一些jQuery來處理折疊菜單時的“堆疊”,而不是保持水平。 要做到這一點,Bootstrap的show / hide collapse事件將show.bs.collapse hide.bs.collapseshow.bs.collapsehide.bs.collapse

//Stack menu when collapsed
$('#bs-example-navbar-collapse-1').on('show.bs.collapse', function() {
    $('.nav-pills').addClass('nav-stacked');
});

//Unstack menu when not collapsed
$('#bs-example-navbar-collapse-1').on('hide.bs.collapse', function() {
    $('.nav-pills').removeClass('nav-stacked');
});

在這里工作演示

另一種嘗試方法是將navbar li設置為100%

@media (max-width: 768px) {
  #navbar li { width:100%; }
}

完整解決方案

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Case</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

<style>
body {
    background-color: linen;
}

.nav {
  background-color :#722872;
  height: 60px;
  display: flex;
  justify-content: center;
  align-items: center;
}

.navbar {
  background-color :#722872;
 }
</style>
</head>
<body>

<nav class="navbar navbar-inverse">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>                        
      </button>
      <a class="navbar-brand" href="#">WebSiteName</a>
    </div>
    <div class="collapse navbar-collapse" id="myNavbar">
      <ul class="nav nav-pills navbar-right">
        <li class="active"><a href="#">Home</a></li>
        <li><a href="#">Page 2</a></li>
        <li><a href="#">Page 3</a></li>
      </ul>
    </div>
  </div>
</nav>

<div class="container">
  <h3>Collapsible Navbar</h3>
  <p>In this example, the navigation bar is hidden on small screens and replaced by a button in the top right corner (try to re-size this window).
  <p>Only when the button is clicked, the navigation bar will be displayed.</p>
</div>

</body>
</html>


                          OR

CodePan 查看

@Tricky12有一個很好的解決方案,我用於自己,只是改變了最后一部分。

//Unstack menu when not collapsed
$('#bs-example-navbar-collapse-1').on('hidden.bs.collapse', function() {
    $('.nav-pills').removeClass('nav-stacked');
});

部分:hidden.bs.collapse在菜單完全關閉時觸發,而hide.bs.collapse在它開始關閉時觸發。

如果你觸發.removeClass('nav-stacked'); 在折疊菜單完全關閉之前,將在完全關閉之前顯示水平菜單幾分之一秒。

希望這會對某人有所幫助。

.nav-justified類的引導程序將處理所有事情。 這將調整寬度超過768px的瀏覽器中的鏈接。 比這更小,鏈接將被堆疊。 只需將其添加到元素中即可。

<ul class="nav nav-pills head-menu nav-justified">

...[rest of your code stays the same]...    

沒有解決如何折疊項目的問題,我正在說明如何堆疊它們。 所以我的答案可能無濟於事,但我認為它有所幫助。

我試圖將navbar-pills包裝成navbar-collapse但它看起來很糟糕,因為它有不同的縮進。 所以我使用了visible-xs (用於navbar-collapse)和hidden-xs (用於nav-pills)類創建了兩個不同的navbars。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM