防止在没有JavaScript的情况下隐藏下拉列表

时间:2017-11-06 06:04:26

标签: html css css3 twitter-bootstrap-3 drop-down-menu

纯CSS(无JavaScript)中的onClick和hover下拉菜单首先显示项目,但是当我将鼠标放在下拉项目上时,菜单不会保持打开状态(但它确实在点击时保持打开状态)。

这是:

.acn-menu {
  text-align: center;
  background-color: rgba(0, 0, 0, 0.9);
}

.label_openclose {
  display: none;
}

.menu-tabs {
  height: 100%;
  padding-left: 0;
  padding-right: 0;
  padding-top: 0;
  padding-bottom: 0;
}

@media (min-width: 320px) {
  .menu-tabs {
  position: absolute;
  }
}

.menu-tabs .elem {
  box-sizing: border-box;
  padding: 0 20px;
  float: left;
  height: 100%;
  line-height: 70px;
  background-color: rgb(30, 30, 30);
  color: white;
}

.menu-check {
  display: none;
}


label {
  margin-bottom: 0;
}

.label_openclose {
  display: inline-block;
  width: 60px;
  min-height: 50px;
  background-color: transparent;
  cursor: pointer;
  overflow:hidden;
  display:block;
}

.menu-tabs .elem {
  line-height: initial;
  float: initial;
  height: 0px;
  cursor: pointer;
  border-top: 0px solid #000;
  overflow: hidden;
}

.menu-check:checked~.menu-tabs .elem {
  height: 25px;
  color: white;
  border-top: 2px solid rgba(255, 255, 255, 0.2);
}

.label_openclose:hover~.menu-tabs .elem {
  border-top: 2px solid rgba(255, 255, 255, 0.2);
  height: 25px;
}

这是一个小提琴:

https://jsfiddle.net/Lwjvwcva/

2 个答案:

答案 0 :(得分:2)

您必须添加一条规则,告诉浏览器在悬停时显示.menu-tabs,因此我添加了以下规则:

 .label_openclose~.menu-tabs:hover .elem {
  border-top: 2px solid rgba(255, 255, 255, 0.2);
  height: 25px;
}

检查updated fiddle here。 希望这会有所帮助:)

答案 1 :(得分:0)

为了使子菜单保持打开状态,子菜单所在的项目INSIDE需要是悬停时选择的项目。在这种情况下.acn-menu或.nav(我在代码中使用了.nav)。为了使悬停子菜单保持打开状态,我删除并在css中添加了几行:

移除:

.label_openclose:hover~.menu-tabs .elem {
    border-top: 2px solid rgba(255, 255, 255, 0.2);
    height: 25px;
}

添加了:

.nav .menu-tabs {
    display:none;
}

.nav:hover  .menu-tabs {
    display:block;
}

.menu-tabs .elem {
    height:25px;
    border-top: 2px solid rgba(255, 255, 255, 0.2);
}