html - 选中复选框时不显示下拉菜单

标签 html css

我正在尝试仅使用 CSS 来折叠和展开菜单。我只找到了这个解决方案并查看了其他论坛帖子,但仍然无法让它工作。任何帮助将不胜感激。

.fullWidth {
  width: 100%;
  margin-left: auto;
  margin-right: auto;
  background-color: #c3c3c3;
}
.logo {
  float: left;
}
.imgfull {
  width: 100%;
  height: auto;
}
.nav {
  float: right;
  margin: -22px 57px 0 0;
}
.nav ul {
  padding: 0;
  margin: 25px 0 0 -15px;
}
.nav ul li {
  display: inline;
  margin: 0 0 0 25px;
}
.nav ul li a {
  background-color: #c3c3c3;
  color: #9a0000;
  padding: 10px 20px;
  text-decoration: none;
  border-radius: 4px 4px 4px 4px;
}
.nav ul li a:hover {
  background-color: #000000;
  color: #ffffff;
}
.navlog {
  float: right;
  margin: 12px 50px 0 0;
}
.navlog ul {
  list-style: none;
  padding: 0;
  margin: 0 0 0 0;
  font-weight: bold;
  text-align: center;
}
.navlog ul li {
  display: block;
  margin: 20px 0;
}
.navlog ul li a {
  background-color: #9a0000;
  color: #000000;
  padding: 10px 20px;
  text-decoration: none;
  border-radius: 4px 4px 4px 4px;
}
.navlog ul li a:hover {
  background-color: #000000;
  color: #ffffff;
}
.show-menu {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  text-decoration: none;
  color: #fff;
  background: #19c589;
  text-align: center;
  padding: 10px 0;
  display: none;
}
/*Hide checkbox*/

input[type=checkbox] {
  display: none;
}
/*Show menu when invisible checkbox is checked*/

input[type=checkbox]:checked ~ .nav {
  display: block;
}
@media (max-width: 48.000em) {
  .nav {
    width: 100%;
    margin: 0 0 0 50px;
  }
  .nav ul {
    width: 100%;
    font-weight: normal;
    margin: auto;
    position: static;
    display: none;
  }
  .nav ul li {
    width: 100%;
    text-align: center;
    margin: auto;
  }
  .nav ul li:nth-of-type(odd) a {
    border-right: 1px solid #ccc;
  }
  .nav ul li a {
    padding: 8px 0px;
    border-bottom: 1px solid #ccc;
    display: block;
  }
  .nav ul li,
  li a {
    width: 100%;
  }
  .show-menu {
    display: block;
  }
}
@media (max-width: 48.000em) {
  .navlog {
    width: 100%;
    margin: 0 0 0 50px;
  }
  .navlog ul {
    width: 100%;
    font-weight: normal;
    margin: 0 0 -35px 0;
  }
  .navlog ul li {
    width: 100%;
    text-align: center;
    margin: auto;
  }
  .navlog ul li:nth-of-type(odd) a {
    border-right: 1px solid #ccc;
  }
  .navlog ul li a {
    padding: 8px 0px;
    border-bottom: 1px solid #ccc;
    display: block;
  }
}
<label for="show-menu" class="show-menu">Show Menu</label>
<input type="checkbox" id="show-menu" role="button"/>
<div class="nav">                       
  <ul class="show-menu">
    <li><a href="#">Home</a></li>
    <li><a href="#">Application Process</a></li>
    <li><a href="#">Rental Listings</a></li>
    <li><a href="#">Media</a></li>
    <li><a href="#">Tenant Information</a></li>
    <li><a href="#">Contact</a></li>
  </ul>  
</div>                      

<br clear="both"/>

最佳答案

.show-menu 是隐藏项,不是 .nav。您需要更正以下代码:

/*Show menu when invisible checkbox is checked*/
input[type=checkbox]:checked ~ .nav .show-menu{
    display: block;
}

https://jsfiddle.net/2vmLwntc/

关于html - 选中复选框时不显示下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32979863/

相关文章:

javascript - 创建 UL 列以列出所选文件和上传文件中的文件

javascript - 使用溢出:auto to disable momentum scrolling?后如何获取滚动方向

html - 在底部显示多个内联div的内容

html - '位置 : sticky' un-sticking mid scroll, 原因未知

CSS float :left usage

javascript - 加载 fontawesome 的回退计划

html - 使用 CSS 技巧剪切边框

html - 收集所有 Javascript、CSS 和图像以部署网站或应用程序?

html - legacy bootstrap 2.3.2 在生成多个跨度时清除行

html - 具有倾斜边框的元素