如何使子菜单像下拉菜单一样显示第一个值,如select

时间:2015-03-18 09:33:10

标签: jquery css

<nav class="navbar navbar-default">
 <div class="container">
  <div class="navbar-header">
    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#main-nav">
      <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="#">ADEX</a>
    </div>
    <div class="collapse navbar-collapse" id="main-nav">
      <ul class="nav navbar-nav nav-page">
        <li class="dropdown">
          <a href="#">Home</a>
        </li>
        <li class="dropdown">
          <a href="#" data-toggle="collapse" data-target="#one">About</a>
        </li>
        <li class="dropdown">
          <a href="#" data-toggle="collapse" data-target="#two">Programmes</a>
        </li>
        <li class="dropdown">
          <a href="#" data-toggle="collapse" data-target="#three">Info</a>
        </li>
        <li class="dropdown">
          <a href="#" data-toggle="collapse" data-target="#four">Travel</a>
        </li>

      </ul>
    </div>
  </div>
  <div class="sub-nav"></div>
 </div>
</nav>
<nav class="submenu">
  <div class="container">

  <ul class="nav nav-justified">
    <li>
      <ul class="nav nav-justified collapse" id="one">
           <li class="active"><a href="#">2015</a></li>
           <li class="active"><a href="#">About Mission</a></li>
           <li><a href="#">History</a></li>
      </ul>
    </li>
    <li>
      <ul class="nav nav-justified collapse" id="two">
         <li><a href="#">A</a></li>
         <li><a href="#">B</a></li>
         <li><a href="#">C</a></li>
         <li><a href="#">D</a></li>
      </ul>
    </li>
    <li>
      <ul class="nav nav-justified collapse" id="three">
         <li><a href="#">E</a></li>
         <li><a href="#">F</a></li>
      </ul>
    </li>
    <li>
      <ul class="nav nav-justified collapse" id="four">
        <li><a href="#">G</a></li>
        <li><a href="#">H</a></li>
      </ul>
    </li>
  </ul>
</div>
</nav>

CSS

.submenu{
  background: #404040;
  margin-bottom: 20px;
  height: 67px;
  padding: 15px;
}

.nav-justified > li > a{
  display: inline-block;
  color: #fff;
  float: left;
  font-weight: 300;
  letter-spacing: 1px;
  padding: 10px;
  white-space: nowrap;
}


.collapsing {
  display:none;
}

.nav-justified .active:before {
  content: '';
  width: 0px;
  height: 0px;
  display: inline-block;
  vertical-align: middle;
  border-left: 10px solid transparent;
  border-right: 10px solid transparent;
  border-bottom: 10px solid #f9f9f9;
  position: absolute;
  top: 42px;
  right: 0;
  left: 0;
  bottom: 0;
  margin: 0 auto;
}

.nav-justified > li > a:hover,
.nav-justified > li > a:focus{
  background-color: transparent;
  color: #333;
}

.navbar-brand{
  display: none;
}
@media (max-width: 768px){
  .navbar-brand{
    display: block;
  }
}

.navbar{
  background: #F1F1F1!important;
  border: 0!important;
  margin-bottom: 0;
}

.navbar-nav > li > a{
  color: #000!important;
  font-weight: 300;
  letter-spacing: 2px;
}

@media (min-width: 768px){
.navbar-nav > li > a {
  padding-top: 30px;
  padding-bottom: 30px;
 }
}

.navbar-nav > li:hover > a{
  border-top: 7px solid #0083A0;
  border-bottom: 7px solid #0083A0;
  padding-top: 23px;
  padding-bottom: 23px;
}

.nav-page > li > a{
  padding: 0;
}

.nav-page > li{
  padding: 30px 15px;
}

.nav-page > li:hover{
  padding: 0 15px }

Jquery的

$('.collapse').on('shown.bs.collapse', function (e) {
    $('.collapse').not(this).removeClass('in');
  });

  $('[data-toggle=collapse]').click(function (e) {
    $('[data-toggle=collapse]').parent('li').removeClass('active');
    $(this).parent('li').toggleClass('active');
       var text = $(this).text();
    $('.navbar-brand').html(text);
  });

JSFiddle Demo

Screenshot example

无法进行子菜单下拉,折叠关闭并展开以打开。

屏幕截图显示了一个带有列表和子菜单下拉列表的主导航将自动&#34;填充&#34;主导航中的子菜单列表。第一个将显示&#39; A&#39;在下拉菜单中,然后它将使用户能够单击向下箭头以查看“程序”下的完整子菜单列表。

  1. 如何使子菜单与下拉列表选择类似?

  2. 如何让子菜单显示第一个文本?例如,子菜单列表有A,B,C,D。所以它应该首先显示A.然后用户点击向下箭头以查看更多子菜单列表 - A B C D。

  3. 任何帮助表示感谢。

    Show you better example of what I am looking for

    这是我正在寻找的例子。

    主导航应该在自己的栏中,子菜单导航应该在自己的栏中,无论是桌面还是移动。

    然后在移动设备屏幕上,子菜单导航应该作为下拉列表。它将显示主导航

    中所选列表的列表

1 个答案:

答案 0 :(得分:0)

Here is the updated fiddle.

我已更改层次结构,以便sub-menu与主菜单正确对齐。如果没有层次结构更改,使用纯CSS就不可能进行对齐。

我使用了一些JavaScript进行切换,直到找到data-toggle。所以没有JavaScript ^。^

我在下拉列表中使用了select标记,但效果很好,但无法自定义。有一种解决方法可以更改箭头。有关说明,请参阅this帖子。

我对你小提琴的改动如下

CSS:

div.sub_menu {
    display: none;
    position:absolute;
    bottom: -50px;
    min-width: 100%;
}

div.sub_menu.in {
    display: block;
}

div.sub_menu > select {
    background: #404040!important;
    min-width: 100%;
    color: white;
    height: 50px;
    font-size: 24px;
}

HTML:

<ul class="nav navbar-nav nav-page">
    <li class="dropdown">
        <a href="#">Home</a>
     </li>
    <li class="dropdown">
        <a href="#" data-toggle="collapse" data-target="#one">About</a>
        <div class="sub_menu nav nav-justified collapse" id="one">
            <select>
            <option value="2015">2015</option>
            <option value="Mission">Mission</option>
            <option value="History">History</option>
            </select>
        </div>
    </li>
    <li class="dropdown">
        <a href="#" data-toggle="collapse" data-target="#two">Programmes</a>
        <div class="sub_menu nav nav-justified collapse" id="two">
            <select>
            <option value="A">A</option>
            <option value="B">B</option>
            <option value="C">C</option>
            <option value="D">D</option>
            </select>
        </div>
    </li>
    <li class="dropdown">
        <a href="#" data-toggle="collapse" data-target="#three">Info</a>
        <div class="sub_menu nav nav-justified collapse" id="three">
            <select>
            <option value="E">E</option>
            <option value="F">F</option>
            </select>
        </div>
    </li>
    <li class="dropdown">
        <a href="#" data-toggle="collapse" data-target="#four">Travel</a>
        <div class="sub_menu nav nav-justified collapse" id="four">
            <select>
            <option value="G">G</option>
            <option value="H">H</option>
            </select>
        </div>
    </li>
</ul>