HTML / CSS水平子子菜单附加到垂直子菜单

时间:2015-07-29 01:56:35

标签: html css menu submenu

我想将一个水平的垂直子子菜单与子菜单对齐,如下所示:enter image description here

我能够实现这一点,如图所示,但我必须使这个位置绝对。问题是我希望每个子子菜单的顶部与它所连接的子菜单的顶部对齐。例如,艺术家子子菜单与显示的子菜单完全相同,但是A到Z会与艺术家对齐。

为了按照我现在的方式这样做,我必须创建许多不同的css部分,而不是能够选择一个部分的多个子菜单(例如#sortsongmenu,#sortartistmenu {styling}。我想要找到一种方法,使子子菜单处于显示的位置而不必分别定位每个子子菜单,而是采用一种样式方法,可以应用于具有相对或一些其他定位的所有子子菜单。

HTML code:



<-- CSS code--> 
#topbar {
background-color: #222;
}
#topbar_wrapper {
width: 100%;
margin: 0 auto;
text-align: left;
}





#mainmenu {
list-style-type: none;
padding: 0px;
margin: 0px;
position: relative;
min-width: 200px;
}
#mainmenu li {
display: inline-block;
width: 200px;
}
#mainmenu li:hover {
background-color: #333;
}
#mainmenu li a{
color: #CCC;
display: block;
padding: 15px;
text-decoration: none;
}
#mainmenu li:hover > ul {
display: block;
}





#sortmenu {
display: none;
position: absolute;
background-color: #333;
border: 5px solid #222;
border-top: 0;
margin-left: -5px;
}
#sortmenu li {
display: block;
}
#sortmenu li a:hover {
color: #699;
}
#sortmenu li: hover ul {
display: inline-block;
}





#sortsongmenu, #sortartistmenu {
display: none;
position: absolute;
background-color: #333;
border: 5px solid #222;
border-left: 0px;
text-align: right;
left: 100%;
bottom: 65%;
width: 100px;
}

#sortsongmenu li, #sortartistmenu li{
display: inline;
}

#sortsongmenu li a:hover, #sortartistmenu li a:hover {
color: #DB7093;
}
&#13;
<div id="topbar">
  <div id="topbar_wrapper">
    <ul id="mainmenu">
      <li><a href="#">Home</a>
      </li>
      <li>
        <a href="#">Search</a>
      </li>
      <li>
        <a href="#">Sort By &#9660</a>
        <ul id="sortmenu">
          <li><a href='#'>Song</a>
            <ul id="sortsongmenu">
              <li><a href='#'>A to Z</a>
              </li>
              <li>
                <a href='#'>Z to A</a>
              </li>
            </ul>
          </li>
          <li>
            <a href='#'>Artist</a>
            <ul id="sortartistmenu">
              <li><a href='#'>A to Z</a>
              </li>
              <li>
                <a href='#'>Z to A</a>
              </li>
            </ul>
          </li>
          <li>
            <a href='#'>Album</a>
          </li>
          <li>
            <a href='#'>Genre</a>
          </li>
          <li>
            <a href='#'>BPM</a>
          </li>
          <li>
            <a href='#'>Release Date</a>
          </li>
        </ul>
      </li>
      <li>
        <a href="#">Add Song</a>
      </li>
      <li>
        <a href="#">Contant Us</a>
      </li>
    </ul>
  </div>
</div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:2)

尝试:

更改

#sortmenu li {
    display: block;
}

#sortsongmenu, #sortartistmenu {
    display: none;
    position: absolute;
    background-color: #333;
    border: 5px solid #222;
    border-left: 0px;
    text-align: right;
    left: 100%;
    bottom: 65%;
    width: 100px;
}

#sortmenu > li {
    display: block;
    position: relative;
}

#sortsongmenu, #sortartistmenu {
    display: none;
    position: absolute;
    background-color: #333;
    border: 5px solid #222;
    border-left: 0px;
    text-align: right;
    left: 100%;
    top: 0;
    width: 100px;
}

编辑:

将顶部更改为-5px,因为子子菜单的边框顶部为5px。这样看起来会更好。