【问题标题】:Drop down menu not showing sub menus下拉菜单不显示子菜单
【发布时间】:2017-09-05 09:38:59
【问题描述】:

这是我的下拉按钮的代码,其中包含 1 个附加级别。

当我点击按钮时它工作正常,但是当我尝试在下拉菜单中点击子菜单时,我意识到出了点问题,我的所有四个项目只显示最后一个子菜单。

.icon-cadet-left {
  float: right;
}
.dropbtn {
  width: 300px;
  background-color: #4CAF50;
  color: white;
  padding: 16px;
  font-family: 'Play';
  font-size: 20px;
  border: none;
  cursor: pointer;
  text-transform: uppercase;
  letter-spacing: 2px;
}
.dropdown {
  position: relative;
  display: inline-block;
}
.dropdown-content {
  display: none;
  position: relative;
  background-color: #f9f9f9;
  min-width: 160px;
  box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
}
.dropdown-content a {
  width: 300px;
  color: black;
  font-family: 'Play';
  letter-spacing: 2px;
  padding: 12px 16px;
  text-decoration: none !important;
  display: block;
  text-align: center;
  border-bottom: 0.1em solid #e1e1e1;
  border-radius: 5%;
  text-transform: uppercase;
  overflow: hidden;
}
#dropdown-submenu {
  display: none;
  background-color: #f9f9f9;
  position: absolute;
  box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
  left: 100%;
  top: 0px;
}
#dropdown-submenu a {
  z-index: 1000;
  width: 300px;
  color: black;
  font-family: 'Play';
  letter-spacing: 2px;
  padding: 12px 16px;
  text-decoration: none !important;
  display: block;
  text-align: center;
  border-bottom: 0.1em solid #e1e1e1;
  border-radius: 5%;
  text-transform: uppercase;
}
.dropdown-content a:hover {
  background-color: #f1f1f1
}
#dropdown-submenu a:hover {
  background-color: #f1f1f1
}
.dropdown:hover .dropdown-content {
  display: block;
}
.dropdown-content:hover #dropdown-submenu {
  display: block;
}
.dropdown:hover .dropbtn {
  background-color: #3e8e41;
}
<div class="pricing-button">
  <div class="dropdown">
    <button class="dropbtn">Logo Design</button>
    <div class="dropdown-content animated fadeIn">
      <a class="span1" href="#">Logo & Identity<i class="fa fa-caret-right icon-cadet-left"></i></a>
      <div id="dropdown-submenu">
        <a>Logo Design</a>
        <a>Business Cards</a>
        <a>Sationary</a>
        <a>Holiday Doodles</a>
      </div>
      <a class="hover2" href="#">Business & Advertising<i class="fa fa-caret-right icon-cadet-left"></i></a>
      <div id="dropdown-submenu">
        <a>Sample 01</a>
        <a>Sample 02</a>
        <a>Sample 03</a>
        <a>Sample 04</a>
      </div>
      <a class="hover3" href="#">Website & Digitals<i class="fa fa-caret-right icon-cadet-left"></i></a>
      <div id="dropdown-submenu">
        <a>Sample 01</a>
        <a>Sample 02</a>
        <a>Sample 03</a>
        <a>Sample 04</a>
      </div>
      <a class="hover4" href="#">Textile Designing<i class="fa fa-caret-right icon-cadet-left"></i></a>
      <div id="dropdown-submenu">
        <a>Sample 01</a>
        <a>Sample 02</a>
        <a>Sample 03</a>
        <a>Sample 04</a>
      </div>
    </div>
  </div>
</div>

【问题讨论】:

    标签: html css css-selectors


    【解决方案1】:

    这就是我在您的代码中所做的更改:

    1. 你的语法无效——你不能有多个ids——为此使用classes。

      所以我将dropdown-submenu 更改为class

    2. 而不是.dropdown-content:hover #dropdown-submenu 使用这个:

      .dropdown-content a:hover + .dropdown-submenu {
          display: block;
      }
      

      相邻的兄弟选择器(+) 选择紧跟在菜单a 标记之后的dropdown-submenu

    相邻兄弟选择器 (+) 选择紧随其后的兄弟元素。 有关示例,请参见 herehere

    让我知道您对此的反馈。谢谢!

    .icon-cadet-left {
      float: right;
    }
    .dropbtn {
      width: 300px;
      background-color: #4CAF50;
      color: white;
      padding: 16px;
      font-family: 'Play';
      font-size: 20px;
      border: none;
      cursor: pointer;
      text-transform: uppercase;
      letter-spacing: 2px;
    }
    .dropdown {
      position: relative;
      display: inline-block;
    }
    .dropdown-content {
      display: none;
      position: relative;
      background-color: #f9f9f9;
      min-width: 160px;
      box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
    }
    .dropdown-content a {
      width: 300px;
      color: black;
      font-family: 'Play';
      letter-spacing: 2px;
      padding: 12px 16px;
      text-decoration: none !important;
      display: block;
      text-align: center;
      border-bottom: 0.1em solid #e1e1e1;
      border-radius: 5%;
      text-transform: uppercase;
      overflow: hidden;
    }
    .dropdown-submenu {
      display: none;
      background-color: #f9f9f9;
      position: absolute;
      box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
      left: 100%;
      top: 0px;
    }
    .dropdown-submenu a {
      z-index: 1000;
      width: 300px;
      color: black;
      font-family: 'Play';
      letter-spacing: 2px;
      padding: 12px 16px;
      text-decoration: none !important;
      display: block;
      text-align: center;
      border-bottom: 0.1em solid #e1e1e1;
      border-radius: 5%;
      text-transform: uppercase;
    }
    .dropdown-content a:hover {
      background-color: #f1f1f1
    }
    .dropdown-submenu a:hover {
      background-color: #f1f1f1
    }
    .dropdown:hover .dropdown-content {
      display: block;
    }
    .dropdown-content a:hover + .dropdown-submenu {
      display: block;
    }
    .dropdown:hover .dropbtn {
      background-color: #3e8e41;
    }
    <div class="pricing-button">
      <div class="dropdown">
        <button class="dropbtn">Logo Design</button>
        <div class="dropdown-content animated fadeIn">
          <a class="span1" href="#">Logo & Identity<i class="fa fa-caret-right icon-cadet-left"></i></a>
          <div class="dropdown-submenu">
            <a>Logo Design</a>
            <a>Business Cards</a>
            <a>Sationary</a>
            <a>Holiday Doodles</a>
          </div>
          <a class="hover2" href="#">Business & Advertising<i class="fa fa-caret-right icon-cadet-left"></i></a>
          <div class="dropdown-submenu">
            <a>Sample 01</a>
            <a>Sample 02</a>
            <a>Sample 03</a>
            <a>Sample 04</a>
          </div>
          <a class="hover3" href="#">Website & Digitals<i class="fa fa-caret-right icon-cadet-left"></i></a>
          <div class="dropdown-submenu">
            <a>Sample 01</a>
            <a>Sample 02</a>
            <a>Sample 03</a>
            <a>Sample 04</a>
          </div>
          <a class="hover4" href="#">Textile Designing<i class="fa fa-caret-right icon-cadet-left"></i></a>
          <div class="dropdown-submenu">
            <a>Sample 01</a>
            <a>Sample 02</a>
            <a>Sample 03</a>
            <a>Sample 04</a>
          </div>
        </div>
      </div>
    </div>

    【讨论】:

    • 它看起来不错,但是为什么当我尝试选择任何...时子菜单会消失......
    • @SyedMuhammadIftikhar 对迟到的回复感到抱歉,在这里错过了您的评论......这是因为dropdown-submenu 在我们悬停的a 之外......更改您的标记并删除+ 在 css 中我猜会确定的.. 让我知道您的反馈。谢谢!
    【解决方案2】:

    我已经多次看到您的代码具有相同的 id="dropdown-submenu" 但那不应该。 id 属性为 HTML 元素指定一个唯一的 id(该值在 HTML 文档中必须是唯一的)。如果您多次需要它,那么您应该声明为 class="dropdown-submenu" 然后您必须使用 .dropdown-submenu 而不是 #dropdown-submenu。

    请先更正您与 id 相关的错误,然后再尝试。希望它应该工作。

    谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-12
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      • 2021-01-09
      • 2022-01-01
      相关资源
      最近更新 更多