【问题标题】:Make sub-menu of sub-menu on right side rather than going down在右侧而不是向下制作子菜单的子菜单
【发布时间】:2017-05-30 15:20:56
【问题描述】:

您好,我用子菜单制作了带有子菜单的菜单。但它正在下降而不是向右走。我是 CSS 新手。可以看demoHere

请检查一下,我是否可以帮助我将子菜单对齐到 sub-menu 的右侧。例如:将“DB”和“OT”对齐到“INS”的右侧。

注意:只有当鼠标悬停在菜单“ECC”时,我才需要显示“DB”和“OT”。现在它正在向所有其他人展示。

.menuborder {
  border-style: solid;
  border-width: 1px;
  border-color: #ffffff #0000ff #ffffff #ffffff;
}

.mainmenu {
  height: 0px;
}

.mainmenu ul#nav {
  list-style: outside none none;
  margin: 0;
  padding: 0;
  text-align: left;
}

.mainmenu ul#nav li {
  display: inline-block;
}

.mainmenu ul#nav li a {
  color: #266696;
  display: block;
  margin: 0 -2px;
  padding: 2px 15px;
  text-transform: uppercase;
}

.mainmenu ul#nav li:hover>a {
  background: #11c3f1 none repeat scroll 0 0;
}


/*=================
DropDown Menu
===================*/

#nav>li {
  position: relative;
}

#nav>li:hover ul {
  opacity: 1;
  z-index: 9999;
  top: 100%;
  visibility: visible;
}

#nav>li ul {
  background: #fff none repeat scroll 0 0;
  opacity: 0;
  left: -2px;
  list-style: outside none none;
  margin: 0;
  padding: 0;
  position: absolute;
  text-align: left;
  transition: all 0.5s ease 0s;
  width: 204px;
  padding-left: 2px;
  z-index: -99999;
  top: 150%;
  visibility: hidden
}

#nav>li ul li {
  display: block;
  width: 200px;
}

.mainmenu ul#nav li ul li a:hover {
  color: #fff;
  border-radius: 0 0 80px 0;
  border-left: 4px solid #000;
  padding-left: 10px;
}

.mainmenu ul#nav li ul li a {
  border-bottom: 1px solid #ddd;
  color: #000;
  padding: 10px 10px;
}
<div class="col-md-5 col-lg-5">
  <div class="mainmenu nav">
    <ul id="nav">
      <li class="menuborder"><a href="#">Ins</a>
        <ul>
          <li><a href="#">Ecc</a>
            <ul>
              <li><a href="#">DB</a></li>
              <li><a href="#">Ot</a></li>
            </ul>
          </li>
          <li><a href="#">Edu</a></li>
          <li><a href="#">Emp</a></li>
          <li><a href="#">Med</a></li>
          <li><a href="#">Med</a></li>
          <li><a href="#">Pr</a></li>
          <li><a href="#">Re</a></li>
          <li><a href="#">Soc</a></li>
        </ul>
      </li>
      <li class="menuborder"><a href="#">Assoc</a>
        <ul>
          <li><a href="#">Pi</a></li>
          <li><a href="#">Co</a></li>
          <li><a href="#">Com</a></li>
          <li><a href="#">Fo</a></li>
          <li><a href="#">Mo</a></li>
          <li><a href="#">Org</a></li>
          <li><a href="#">K</a></li>
        </ul>
      </li>
      <li class="menuborder"><a href="#">Cong</a>
        <ul>
          <li><a href="#">Rel</a></li>
          <li><a href="#">Wel</a></li>
        </ul>
      </li>

      <li></li>

    </ul>
  </div>
</div>

【问题讨论】:

    标签: html css menu


    【解决方案1】:

    您可以使用position 进行设置,请查看下方更新的sn-p:

    .menuborder {
      border-style: solid;
      border-width: 1px;
      border-color: #ffffff #0000ff #ffffff #ffffff;
    }
    
    .mainmenu {
      height: 0px;
    }
    
    .mainmenu ul#nav {
      list-style: outside none none;
      margin: 0;
      padding: 0;
      text-align: left;
    }
    
    .mainmenu ul#nav li {
      display: inline-block;
      position: relative;
    }
    
    .mainmenu ul#nav li a {
      color: #266696;
      display: block;
      margin: 0 -2px;
      padding: 2px 15px;
      text-transform: uppercase;
    }
    
    .mainmenu ul#nav li:hover>a {
      background: #11c3f1 none repeat scroll 0 0;
    }
    
    
    /*=================
    DropDown Menu
    ===================*/
    
    #nav>li {
      position: relative;
    }
    
    #nav>li:hover ul {
      opacity: 1;
      z-index: 9999;
      top: 100%;
      visibility: visible;
    }
    
    #nav>li ul {
      background: #fff none repeat scroll 0 0;
      opacity: 0;
      left: -2px;
      list-style: outside none none;
      margin: 0;
      padding: 0;
      position: absolute;
      text-align: left;
      transition: all 0.5s ease 0s;
      width: 204px;
      padding-left: 2px;
      z-index: -99999;
      top: 150%;
      visibility: hidden
    }
    
    #nav>li ul li {
      display: block;
      width: 200px;
    }
    
    .mainmenu ul#nav li ul li a:hover {
      color: #fff;
      border-radius: 0 0 80px 0;
      border-left: 4px solid #000;
      padding-left: 10px;
    }
    
    .mainmenu ul#nav li ul li a {
      border-bottom: 1px solid #ddd;
      color: #000;
      padding: 10px 10px;
    }
    
    .mainmenu ul#nav li ul li.sub-sub-menu ul {
      position: absolute;
      left: 100%;
      top: 0px;
      display: none;
    }
    
    .mainmenu ul#nav li ul li.sub-sub-menu:hover ul {
      display: block;
    }
    
    
    }
    <div class="col-md-5 col-lg-5">
      <div class="mainmenu nav">
        <ul id="nav">
          <li class="menuborder"><a href="#">Ins</a>
            <ul>
              <li class='sub-sub-menu'><a href="#">Ecc</a>
                <ul>
                  <li><a href="#">DB</a></li>
                  <li><a href="#">Ot</a></li>
                </ul>
              </li>
              <li><a href="#">Edu</a></li>
              <li><a href="#">Emp</a></li>
              <li><a href="#">Med</a></li>
              <li><a href="#">Med</a></li>
              <li><a href="#">Pr</a></li>
              <li><a href="#">Re</a></li>
              <li><a href="#">Soc</a></li>
            </ul>
          </li>
          <li class="menuborder"><a href="#">Assoc</a>
            <ul>
              <li><a href="#">Pi</a></li>
              <li><a href="#">Co</a></li>
              <li><a href="#">Com</a></li>
              <li><a href="#">Fo</a></li>
              <li><a href="#">Mo</a></li>
              <li><a href="#">Org</a></li>
              <li><a href="#">K</a></li>
            </ul>
          </li>
          <li class="menuborder"><a href="#">Cong</a>
            <ul>
              <li><a href="#">Rel</a></li>
              <li><a href="#">Wel</a></li>
            </ul>
          </li>
    
          <li></li>
    
        </ul>
      </div>
    </div>

    【讨论】:

    • 感谢您的帮助。但我只想在悬停菜单“ECC”时显示“DB”和“OT”。现在它正在显示给所有其他人。
    • 在这种情况下,您可以将类属性传递给特定的li 并据此更新css。检查更新的答案
    【解决方案2】:

    您可以通过在演示结束时添加两组规则并修改下拉菜单的第一个选择器来快速使其工作:

    /*=================
    DropDown Menu
    ===================*/
    #nav li {
        position: relative;
    }
    
    [...]
    
    #nav li ul ul {
      left: 100%;
    }
    
    #nav li:hover ul ul {
      top: 0;
    }
    

    你可以在这里查看:https://jsfiddle.net/1o795Ly8/

    但我建议更改很多其他内容,例如:

    • 避免在选择器中使用 ID
    • 避免在选择器中使用元素
    • 避免使用长选择器
    • 使用类命名约定来定位菜单的每个元素(检查naming nav dropdown with bem

    否则,您将在维护和更新菜单时遇到很多麻烦。

    【讨论】:

    • 感谢您的帮助。但我只想在悬停菜单“ECC”时显示“DB”和“OT”。现在它正在显示给所有其他人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 2012-10-09
    相关资源
    最近更新 更多