纯CSS菜单 - 子菜单在悬停时消失

时间:2014-12-26 15:12:14

标签: html css

我正在使用纯CSS菜单,当我从li元素移出时,我不知道如何使子菜单保持可见。

高度必须是页面的100%,子菜单与主菜单相同,并且显示在右侧。

欢迎任何建议!

以下是演示(http://jsfiddle.net/91t43ruo/1/

<div class="wrapper">
  <div class="main-menu">
    <ul>
      <li><a href="#">Lorem ipsum</a></li>
      <li><a href="#">Sed id cursus</a></li>
      <li><a href="#">Co-Investor</a></li>
      <li class="has-sub-menu"><a href="#">Donec interdum</a>
        <div class="sub-menu">
          <ul>
            <li><a href="#">Ut quis bibendum</a></li>
            <li><a href="#">Praesent vestibulum</a></li>
            <li><a href="#">Sed ultrices</a></li>
          </ul>
        </div>
      </li>
      <li><a href="#">Morbi a mi blandit</a></li>
      <li><a href="#">Pellentesque</a></li>
    </ul>
  </div>
</div>

body, html{
    height:100%;
    margin:0;
    font-family:Arial;
}
a {
    cursor: pointer;
    text-decoration: none;
}
/*Wrapper*/
.wrapper {
    width: 100%;
    height: 100%;
    background-color: #CCC;
}
/* Menu */
.main-menu, .sub-menu {
    background-color: #2F759B;
    width: 200px;
    height: calc(100% - 40px);
    padding: 20px;
}
.main-menu ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
}
.main-menu li {
    color: white;
    background-color: #3585B0;
    line-height: 26px;
    margin-bottom: 5px;
}
.main-menu li:hover, .main-menu li.has-sub-menu{
    background-color: #43A8DD;
    cursor: pointer;
}
.main-menu a {
    color: inherit;
    margin-left: 6px;
}
/*Sub Menu*/
.sub-menu {
    display:none;
    position: absolute;
    top: 0;
    left: 240px;    
}
.sub-menu ul {
}
/*Hover*/
.main-menu li:hover > div.sub-menu{
    display:block;
}

2 个答案:

答案 0 :(得分:1)

它离li太远,所以悬停和子菜单之间存在差距。而不是left: 240px上的.sub-menu将其更改为left: 220px;

.sub-menu {
  display: none;
  position: absolute;
  top: 0;
  left: 220px;  
}

FIDDLE

<强>更新

好的我的建议是将子菜单包装在另一个div中,这样它仍然可以触摸,但是有你想要的间距:

NEW FIDDLE

答案 1 :(得分:0)

Try this

.sub-menu {
    display:none;
    position: absolute;
    top: 0;
    left: 220px; /*Change 240px to 220px;*/ 
    padding-left: 40px; /**Add this**/
}