【问题标题】:CSS dropdown menu subitem positioningCSS下拉菜单子项定位
【发布时间】:2018-01-11 18:55:46
【问题描述】:

我遇到了一个问题,我的下拉菜单总是在左侧。我需要它,所以它就在每个菜单项的正下方。

我尝试使用定位,因为子项的绝对值是它一直在左侧的原因。但是将position: relative 放在subitem 上会在悬停时完全破坏菜单。

问题演示:https://jsfiddle.net/dsngpsxb/2/

代码如下:

HTML:

<nav class="main-navigation">
    <ul>
      <li class="item"><a href="#">item</a>
          <ul class="subitem">
            <li>subitem</li>
            <li>subitem</li>
            <li>subitem</li>
          </ul>
      </li>
      <li class="item"><a href="#">item</a>
          <ul class="subitem">
            <li>subitem</li>
            <li>subitem</li>
            <li>subitem</li>
          </ul>
      </li>
      <li class="item"><a href="#">item</a></li>
      <li class="item"><a href="#">item</a></li>
      <li class="item"><a href="#">item</a></li>
      <li class="item"><a href="#">item</a></li>
      <li class="item"><a href="#">item</a></li>
    </ul>
</nav>

SCSS/SASS:

.main-navigation {
  width: 100%;
  position: relative;
  ul {
    margin: 0 auto;
    padding: 18px;
    .item {
      display: inline;
      padding-right: 43px;
      font-size: 13px;
      text-transform: uppercase;
      &:hover ul {
        display: block;
      }
    }
  }
}

.subitem {
  display: none;
  position: absolute;
  top: 50px;
  li {
    line-height: 30px;
    font-size: 14px;
  }
}

请注意,我确实在这里进行了研究,并在 SO 上找到了几个问题来解释我的问题,我尝试了所有可接受的答案,但没有任何效果。

我将每个示例都包含在下面的相应 JSfiddle 示例中:

Dropdown menu appearing not below parent

position: relative 添加到我的子项会完全破坏菜单:https://jsfiddle.net/mtp2cg7c/2/

CSS: make dropdown submenu appear below parent <ul> <li>

我的&lt;li&gt; 上的块显示、相对定位和左浮动,绝对定位,100% 顶部和左侧:0 在我的&lt;ul&gt; 上“粉碎”所有项目:https://jsfiddle.net/9s9Lmr1h/4/

CSS dropdown menu element moving to left?

在附加的小提琴中,我注意到全局容器是clear: both; 的属性——我尝试将它与浮动和定位结合使用。所有子项仍向左浮动:https://jsfiddle.net/3x3krdsd/1/

是我的&lt;nav&gt; 标签的错吗?我找不到任何暗示这个标签会改变这些规则行为的东西:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/nav

【问题讨论】:

    标签: html css sass


    【解决方案1】:

    position: relative; 添加到您的.itemleft: 0; 到您的.subitem

    这将使子项目本身相对于父项目定位,这应该会给你你想要的结果:https://jsfiddle.net/58sb3rL4/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-14
      • 2018-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多