拉伸子菜单到父菜单大小

时间:2014-11-05 00:49:02

标签: javascript jquery html css drop-down-menu

我正在使用css和javascript创建一个水平下拉菜单。我已经将菜单拉伸到我想要的宽度(956像素)和菜单选项以展开,但我不知道如何获得我想要的子菜单。我希望他们中的每一个都有与父母相同的宽度。有谁可以帮我这个?

HTML:

<div id="nav">
  <div id="meny">
    <ul id="menu">
      <li class="dropmenu"><a href="#">Abcde</a>
        <ul class="submenu">
          <li><a href="#">1</a></li>
          <li><a href="#">2</a></li>
          <li><a href="#">3</a></li>
        </ul>
      </li>
      <li class="dropmenu"><a href="#">Fghijklmn</a>
        <ul class="submenu">
          <li><a href="#">1</a></li>
          <li><a href="#">2</a></li>
          <li><a href="#">3</a></li>
        </ul>
      </li>
      <li class="dropmenu"><a href="#">Shop</a>
        <ul class="submenu">
          <li><a href="#">1</a></li>
          <li><a href="#">2</a></li>
          <li><a href="#">3</a></li>
        </ul>
      </li>
    </ul>
  </div>
</div>

CSS:

#nav{
width: 956px;
margin-left: auto;
margin-right: auto;
}

#meny{
display: table;
width: 100%;
border-collapse: collapse;
border: none;
}

#menu{
display: table-row;
list-style: none;
}

.dropmenu{
display: table-cell;
background-color: #ff5b2e;
}

.dropmenu a{
display: block;
text-decoration: none;
text-align: center;
}

.submenu{
display: none;
list-style: none;
background: #ff5b2e;
padding: 0;
position: absolute;
}

.submenu li{
width: 100%;
}

JavaScript的:

$(document).ready(function() {
  $('.dropmenu').hover(function() {
    $(this).find('.submenu').slideToggle(); 
  });
});

2 个答案:

答案 0 :(得分:3)

修正了

$(document).ready(function() {
  $('.dropmenu').hover(function() {
    $(this).find('.submenu').toggle(); 
      var width = $(this).css('width'); // find width of sub menu
      $(this).find('.submenu').css('width', width); // set the width of drop down here
  });
});

您可以在此处查看http://jsfiddle.net/yb2p8aoj/

答案 1 :(得分:2)

好的,我觉得这应该可以在没有javascript的情况下解决。这就是我的所作所为:

(1)从position:absolute移除.submenu(你有什么理由想要它吗?)

.submenu{
display: none;
list-style: none;
background: #CC0000;
padding: 0;
width: auto;
}

(2)将背景颜色从.dropmenu移动到.dropmenu a

.dropmenu a {
display: block;
text-decoration: none;
text-align: center;
background-color: #ff5b2e;    
}

(3)此外,我注意到当你将鼠标悬停在子菜单上几次时,下拉菜单也会切换几次。请注意我在js上添加stop()这一行:

$(this).find('.submenu').stop().slideToggle();

小提琴:http://jsfiddle.net/ouz0q5Lj/1/