【问题标题】:How can I push sub-nav ul out of main-nav ul?如何将 sub-nav ul 从 main-nav ul 中推出?
【发布时间】:2015-05-14 00:29:06
【问题描述】:

我有一个由 CMS 生成的主导航菜单,其中包含一个子菜单。这两个菜单都是标准的 ul 标签,带有“navCMSListMenuUL”类,然后在我的 CSS 中相应地设置样式。问题是在 a:hover 上,容器会扩展以容纳新显示的子导航。

我希望子导航离开容器并以比容器下方的任何元素更高的 z-index 流动。我还想在这个导航中清理一些其他的东西,但这些都是子导航流程的辅助。我在 Codepen @http://codepen.io/patrickTheWizard/pen/ZGWKYX 中创建了一个简化的测试用例。

<nav class="navigation">
<ul id="menuElem" class="navCMSListMenuUL">
    <li class="navCMSListMenuLI">
        <a class="navCMSListMenuLink" href="#">Home</a>
    </li>
    <li class="navCMSListMenuLI">
        <a class="navCMSListMenuLink" href="#">About Us</a>
    </li>
    <li class="navCMSListMenuLI">
        <a class="navCMSListMenuLink" href="#">Calendar</a>
    </li>
    <li class="navCMSListMenuHighlightedLI noseparator">
        <a class="navCMSListMenuLinkHighlighted" href="#">Members</a>
        <ul class="navCMSListMenuUL">
            <li class="navCMSListMenuLI">
                <a class="navCMSListMenuLink" href="#">Become a Member</a>
            </li>
            <li class="navCMSListMenuLI">
                <a class="navCMSListMenuLink" href="#">Board Meetings</a>
            </li>
            <li class="navCMSListMenuLI">
                <a class="navCMSListMenuLink" href="#">Committees</a>
            </li>
            <li class="navCMSListMenuLI">
                <a class="navCMSListMenuLink" href="#">Current Members</a>
            </li>
            <li class="navCMSListMenuLI">
                <a class="navCMSListMenuLink" href="#">Member Benefits</a>
            </li>
            <li class="navCMSListMenuLI noseparator">
                <a class="navCMSListMenuLink" href="#">Statistics &amp; Data</a>
            </li>

        </ul>
    </li>

</ul>

/* #01-Header/Nav# */
nav.navigation {
  clear: both;
  /* background-color: #3c3c3c; */
  overflow: visible;
  /* padding: 15px; */
  /* border-top: 6px solid #2a8cec; */
  /* margin-bottom: 30px; */
}

ul#menuElem {
  text-align: center;
  background-color: #3c3c3c;
  border-top: 6px solid #2a8cec;
  margin-bottom: 30px;
}

ul#menuElem li {
  display: inline-block;
  margin: 16px 0 15px 0;
}

ul#menuElem a {
  color: #fff;
  text-decoration: none;
  padding: 15px 35px;
  font-weight: 600;
  text-transform: uppercase;
  border-right: 1px solid;
  margin: 15px 0;
  margin-left: -4px;
}

ul#menuElem a:hover {
  background-color: #2a8cec;
}

ul#menuElem li ul {
  display: none;
  width: 100%;
  float: left;
}

ul#menuElem li:hover ul {
  display: block;
}

ul#menuElem ul li {
  display: block;
}

【问题讨论】:

    标签: html css content-management-system html-lists


    【解决方案1】:

    好的,当您编写类似菜单的代码时,您将拥有相互覆盖的样式(多个嵌套的 UL、LI 和 A)。

    最好在样式表中包含 ">" 元素,这会将查询范围限制为直接子级。

    我对您的代码进行了一些编辑,主要是通过引入直接子规则 (>)。我还使子菜单绝对定位到它的父菜单,这意味着您不会让子菜单推动您的主菜单变大。

    Here is your code pen.

    还有代码:

    /* #01-Header/Nav# */
    nav.navigation {
      clear: both;
      /* background-color: #3c3c3c; */
      overflow: visible;
      /* padding: 15px; */
      /* border-top: 6px solid #2a8cec; */
      /* margin-bottom: 30px; */
    }
    
    ul#menuElem {
      text-align: center;
      background-color: #3c3c3c;
      border-top: 6px solid #2a8cec;
      margin-bottom: 30px;
    }
    
    ul#menuElem > li {
      display: inline-block;
      position: relative;
      margin: 16px 0 15px 0;
    }
    
    ul#menuElem > li > a {
      color: #fff;
      text-decoration: none;
      padding: 15px 35px;
      font-weight: 600;
      text-transform: uppercase;
      border-right: 1px solid;
      margin: 15px 0;
      margin-left: -4px;
    }
    
    ul#menuElem > li > a:hover {
      background-color: #2a8cec;
    }
    
    ul#menuElem > li > ul {
      display: none;
      width: 100%;
      float: left;
    }
    
    ul#menuElem > li:hover ul {
      display: block;
      top: 30px;
      right: 0px;
      position: absolute;
      background: #FFF;
      padding: 0px;
      margin: 0px;
    }
    
    ul#menuElem > li:hover > ul > li{
      margin: 0px;
      padding: 0px;
      list-style: none;
      text-align: left;
      padding: 5px;
      line-height: 30px;
      border-bottom: solid 1px #dedede;
    }
    
    ul#menuElem > li:hover > ul > li > a{
      text-decoration: none;
      color: inherit;
    }
    
    ul#menuElem > li:hover > ul > li:hover {
      background: #000;
      color: #FFF;
    }
    
    ul#menuElem > ul > li {
      display: block;
    }
    

    【讨论】:

      猜你喜欢
      • 2016-01-03
      • 2014-12-14
      • 2017-08-30
      • 2012-03-24
      • 1970-01-01
      • 2021-08-25
      • 2012-12-13
      • 2015-05-23
      • 1970-01-01
      相关资源
      最近更新 更多