棘手的响应水平菜单栏

时间:2014-12-03 07:49:21

标签: html css responsive-design media-queries

我有一个子导航栏,有6个项目或者更多。我想要做的是,当浏览器调整大小时,会根据可用空间显示“更多”图标,并且随着视口大小的减小,下拉列表中的每个项目都会逐个进入子菜单。 / p>

我附上了设计要求的截图。我正在寻找一种方法来完成纯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 个答案:

答案 0 :(得分: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;
        }
    }