2014-12-03 53 views
2

我有一個子導航欄,有6個項目或更多。我試圖做的是,當瀏覽器調整大小時,會根據可用空間顯示一個「更多」圖標,並且隨着視口大小的減小,下拉菜單中的每個項目都會逐個進入子菜單。棘手響應水平菜單欄

我附上了設計要求的屏幕截圖。我正在尋找一種方法來完成這個純CSS或使用媒體查詢。

任何幫助,將不勝感激。

<nav class="navbar navbar-default navbar-fixed-top" role="navigation"> 
     <div class="container-fluid"> 
     <div class="navbar-header"> 
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-6"> 
      <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="#">Brand</a> 
     </div> 

     <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-6"> 
      <ul class="nav navbar-nav"> 
      <li class="active"><a href="#">Home</a></li> 
      <li><a href="#">Link</a></li> 
      <li><a href="#">Link</a></li> 
      <li><a href="#">Link</a></li> 
      <li><a href="#">Link</a></li> 
      </ul> 
     </div><!-- /.navbar-collapse --> 
     </div> 
    </nav> 

http://i.stack.imgur.com/3xD6a.jpg

+1

歡迎來到Stack Overflow。如果您可以向我們提供代碼而不是圖片,我們會幫助您解決問題,因爲我們需要知道您是如何做到的,而不是通過向我們展示一些圖片來解決問題。你能提供一些代碼嗎? – Dorvalla 2014-12-03 07:51:34

+0

任何源代碼?像小提琴? – 2014-12-03 07:52:26

+0

在這個問題上發佈您的相關代碼和分析... – Aditya 2014-12-03 07:58:02

回答

4

here是你描述的工作示例。 (它的醜陋我沒有花太多時間在造型上)

這個想法是使用媒體查詢結合第n個子選擇器來只顯示所需的元素。

<ul class="nav"> 
    <li>1</li> 
    <li>2</li> 
    <li>3</li> 
    <li>4</li> 
    <li>5</li> 
    <li>6</li> 
    </ul> 

    <ul id="more"> 
    <li>1</li> 
    <li>2</li> 
    <li>3</li> 
    <li>4</li> 
    <li>5</li> 
    <li>6</li> 
    </ul> 


    ul, li{ 
     list-style:none; 
     } 
    .nav > li{ 
     display:inline-block; 
     width:100px; 
     height:50px; 
     border:1px solid black; 
     font-size:20px; 
     text-align:center; 
     box-sizing:border-box; 
     padding-top:10px; 
     background:white; 
     margin:5px; 
     vertical-align:top; 
    } 

    .nav{ 
     background:beige; 
     padding:10px; 
     height:55px; 
     overflow:hidden; 
     whitespace:no-wrap; 
    } 

    #more { 
    display:none; 
     margin:0; 
     padding:2px; 

     width:40px; 
    position:absolute; 
     top:20px; 
     right:0; 
     border-left:4px solid black; 
     padding-top:60px; 
    } 

    #more > li{ 
     font-size:10px; 
     border:1px solid black; 
     width:100%; 
     margin:2px 0; 
    box-sizing:border-box; 
     display:none; 

    } 




    @media screen and (max-width: 700px) { 
     #more { 
      display:block; 
     } 

     #more:hover li:nth-child(6) { 
      display:block; 
     } 
    } 



    @media screen and (max-width: 600px) { 
     #more { 
      display:block; 
     } 

     #more:hover li:nth-child(5) { 
      display:block; 
     } 
    } 
+0

這看起來不錯!謝謝:)但我想是否可以做到這一點,而不必重複菜單? – 2014-12-04 07:10:51

+0

如果你不想重複菜單,你將不得不將它們移動到不同的父級(需要JavaScript),它將需要大量的CSS過度消耗來創建他們已經移動到不同父元素的錯覺,以及使他們在使用兄弟選擇器不是其父母的元素上懸停顯示/隱藏。 – CodeToad 2014-12-04 12:39:37