遇到的問題:
最近在使用Bootstrap框架做網頁時發現,在小屏幕和手機屏幕之下(max-width: 768px),導航欄不能在點擊導航鏈接時,自動折疊導航欄。或者在展開導航欄后,如果不點擊其中的導航鏈接,用戶在選擇滑動屏幕時,不能做到自動折疊導航欄。需要用戶手動點擊折疊按鈕,才能收回去。這在小屏幕寶貴的顯示面積內,顯然不合理,用戶體驗也不好。
我用一張動圖來更好的說明這個問題:
解決方法:
先看HTML代碼:
1 <!-- HTML--> 2 <nav class="navbar navbar-fixed-top"> 3 <div class="container"> 4 <!-- navbar-header --> 5 <div class="navbar-header"> 6 <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> 7 <span class="sr-only">Toggle navigation</span> 8 <span class="icon-bar"></span> 9 <span class="icon-bar"></span> 10 <span class="icon-bar"></span> 11 </button> 12 <a class="navbar-brand" href="#">Project Name</a> 13 </div> 14 <!-- navbar-nav --> 15 <div id="navbar" class="navbar-collapse collapse"> 16 <ul class="nav navbar-nav"> 17 <li class="active"><a href="#">Home</a></li> 18 <li><a href="#features">Features</a></li> 19 <li><a href="#about_me">About me</a></li> 20 </ul> 21 </div> 22 </div> 23 </nav>
Bootstrap中折疊(Collapse)的方法如下:
方法 | 描述 | 實例 |
---|---|---|
Options:.collapse(options) | 激活內容為可折疊元素。接受一個可選的 options 對象。 | $('#identifier').collapse({ toggle: false }) |
Toggle:.collapse('toggle') | 切換顯示/隱藏可折疊元素。 | $('#identifier').collapse('toggle') |
Show: .collapse('show') | 顯示可折疊元素。 | $('#identifier').collapse('show') |
Hide: .collapse('hide') | 隱藏可折疊元素。 | $('#identifier').collapse('hide') |
知道collapse的方法之后,問題就容易解決得多了,只需要用戶滾動或者點擊導航鏈接時,調用.collapse('hide')方法,就可以實現自動折疊導航欄了。
JavaScript代碼如下:
1 $(window).scroll(function () { 2 //小屏幕下的導航條折疊 3 if ($(window).width() < 768) { 4 //點擊導航鏈接之后,把導航選項折疊起來 5 $("#navbar a").click(function () { 6 $("#navbar").collapse('hide'); 7 }); 8 //滾動屏幕時,把導航選項折疊起來 9 $(window).scroll(function () { 10 $("#navbar").collapse('hide'); 11 }); 12 } 13 });
實現導航欄自動折疊的效果如下:
希望這篇文章對遇到相同問題的人有幫助!