【问题标题】:Dropdown Menu Pushing Parent Menu Items下拉菜单推送父菜单项
【发布时间】:2014-10-12 15:44:54
【问题描述】:

我有五个父菜单项,第三个有一个子下拉菜单。当您单击第三个父菜单时,会显示下拉菜单,但它会将第四个和第五个父菜单项推到下方。我希望下拉菜单位于父菜单行下方,而不推送任何父菜单项。这是一个 Shopify 网站。

http://jsfiddle.net/3s2qhhx3/

//Main nav expanders
$(document).on('click', '#navpanel .mainnav .title', function() {
  $(this).parent().addClass('active').siblings().removeClass('active');
  $(window).trigger('reup-navbar');
});
var navSpeed = 150;
$(document).on('click', '#navpanel .mainnav button', function() {
  //Prep animation on sublist
  if ($(this).parent().hasClass('expanded')) {
    $(this).html('<span class="icon-plus"></span>');
    $(this).siblings('ul').stop(true, true).css('display', 'block').slideUp(navSpeed, 'linear', function() {
      $(this).parent().toggleClass('expanded');
      $(window).trigger('reup-navbar');
    });
  } else {
    $(this).html('<span class="icon-cross"></span>');
    $(this).siblings('ul').stop(true, true).css('display', 'none').slideDown(navSpeed, 'linear', function() {
      $(window).trigger('reup-navbar');
    });
    $(this).parent().toggleClass('expanded');
  }
  $(window).trigger('reup-navbar');
});
$(document).on('click', '#navpanel .mainnav a[href="#"]', function() {
  $(this).siblings('button').trigger('click');
  return false;
});
#navbar #navpanel .mainnav {
  position: relative;
  margin: 0 auto;
}
#navbar #navpanel .mainnav > ul > .active > ul {
  display: block;
  text-align: center;
}
#navbar #navpanel .mainnav li li {
  position: relative;
  display: inline;
  text-align: center;
}
<div class="mainnav">
  <ul class="tier1">
    <li id="blog">blog</li>
    <li class="">
      <a class="tier1title" href="/collections/newarrivals">New Arrivals</a>
    </li>
    <li class="">
      <a class="tier1title" href="/#">Categories</a>
      <ul class="tier2">
        <li class="">
          <a href="/collections/knits">Knits</a>
        </li>
        <li class="">
          <a href="/collections/tops">Tops</a>
        </li>
        <li class="">
          <a href="/collections/dresses">Dresses</a>
        </li>
        <li class="">
          <a href="/collections/bottoms">Bottoms</a>
        </li>
        . . .
        <li class="">
          <a class="tier1title" href="/collections/sale">Sale</a>
        </li>
        <li class="registerform">
          ...
        </li>
      </ul>
</div>

【问题讨论】:

  • javascript代码在哪里?
  • @AlexChar 添加。感谢您查看帖子。
  • 发布问题时最好发布小提琴来演示问题。这样会有更多的人帮助你:)
  • 最好把你的小提琴贴出来.. ^^
  • @AlexChar 添加了一个小提琴。我认为点击滑动可以通过 Shopify 液体代码,所以我无法将它添加到小提琴中。但我认为它显示了显示子菜单时菜单的外观,这就是我想要改变的。所以也许它仍然有帮助......?

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


【解决方案1】:

您需要将子菜单的position 设置为absolute。此外,您需要将第一个 &lt;li&gt; 显示更改为 inline-block 而不是 inline

CSS:

.mainnav {
    position: relative;
    margin: 0 auto;
}

.mainnav ul > li {
    display: inline-block;
    text-align: center;
}
.mainnav ul li:hover ul {
    display:block;
    background:red;
    height:auto; 
    width:auto; 
}
.mainnav ul li ul {
    position: absolute;
    display: none;
    padding: 0;
    margin: 0;
}

希望对您有所帮助。 Updated Fiddle..

【讨论】:

  • 谢谢!为什么我需要将第一个 li 更改为 inline-block?
  • 当你只输入inline时,下一个元素会出现在它旁边。通过将其更改为inline-block,它将保留它旁边的空间,这就是为什么下一个ul 显示在li 下方的原因。查看此link 以获得更好的理解..
猜你喜欢
  • 2019-12-05
  • 2021-11-19
  • 2017-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多