【问题标题】:Vertical dropdown Menu with submenu showing on hover垂直下拉菜单,悬停时显示子菜单
【发布时间】:2016-04-19 21:42:58
【问题描述】:

我想制作一个具有以下结构的垂直下拉菜单(对于每个“按钮”,一个不同的“下拉”div)。这个想法是当我将“按钮”悬停时,“下拉菜单”出现在 上方具有相同大小的“按钮”(“下拉菜单”缩小到具有相同高度的“按钮”大小“subnav1”)或显示在“下拉菜单”的左侧(再次与高度“subnav1”)。但是,问题是我无法在“按钮”悬停时使“下拉”display:blocks 悬停,在第二种情况下,在选择“subnav1”时悬停“按钮” “ 元素。 HTML:

<div class="nav">
    <ul class="nav1">
        <li class="button"><div class="subnav">BUTTON1</div></li>
        <li class="button"><div class="subnav">BUTTON2</div></li>
        <li class="button"><div class="subnav">BUTTON3</div><li>
        <li class="button"><div class="subnav">BUTTON4</div></li>
        <li class="button"><div class="subnav">BUTTON5</div></li>
    </ul></div>
    <div class="dropdown">
        <A href="#" class="subnav1">SUBBUTTON1</a>
        <A href="#" class="subnav1">SUBBUTTON1</a>
        <A href="#" class="subnav1">SUBBUTTON1</a>
    </div>

CSS:

.nav {
    width: 180px;
    padding: 1vm;
    float:left;
    height:450px;
    position:relative;
    text-align:center;
    background-color:#a56d3b;
}
ul{
    list-style:none;
    margin: 0;
    padding: 0;
    text-align:right;
}
.nav a{
    text-decoration:none;

}
.subnav{
    font-weight:bold;
    text-align:center;
    color:#FCFBE3;
    font-family: 'PT Serif', serif;
    font-size:1.3em;
    display:block;
}
.button{
    border-bottom:1PX DOTTED #FFECBA;
    border-right:1PX DOTTED #FFECBA;
    height:90px;
    width:100%;
    padding:2em 0 0 0 ;
    cursor:pointer;
}
.button:last-child{
    border-bottom:0px;
}
.button:hover{
    background-color:rgba(0,0,0,0.5);
}
.dropdown{
    height:89px;
    float:left;
    width:auto;
    min-width:100px;
    text-align:center;
    margin:0 180px;
    position:absolute;
    cursor:pointer;
    border:1px solid black;

}

.subnav1{
    height:30px;
    width:180px;
    padding:5px 0;
    color:black;
    font-family: 'PT Serif', serif;
    font-size:1em;
    color:white;
    text-decoration:none;
    background-color:#D8A06E;
        DISPLAY:BLOCK;
}
.subnav1:hover{
    background-color:rgba(0,0,0,0.5);
}
.nav.nav1 .button:hover .dropdown{
    display:block;
}

【问题讨论】:

    标签: html css menu dropdown


    【解决方案1】:

    我认为这就是你想要的样子。如果这不是您想要的结果,请告诉我

    .dropbtn {
        background-color: #E61094;
        color: white;
        padding: 16px;
        font-size: 16px;
        border: none;
        cursor: pointer;
    }
    
    .nav {
        position: relative;
        display: inline-block;
    }
    
    .dropdown-content {
        display: none;
        position: absolute;
        background-color: #f9f9f9;
        min-width: 115px;
        box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
    }
    
    .dropdown-content a{
        color: black;
        padding: 12px 16px;
        text-decoration: none;
        display: block;
    }
    
    .dropdown-content a:hover {
    	background-color: #9E1192
    }
    
    .nav:hover .dropdown-content {
        display: block;
    }
    
    .nav:hover .dropbtn {
        background-color: #F576EA;
    }
    <div class="nav">
      <button class="dropbtn">Dropdown 1</button>
      <div class="dropdown-content">
       <a href="#">Subbutton 1</a>
       <a href="#">Subbutton 2</a>
       <a href="#">Subbutton 3</a>
      </div>
    </div>
    
    <div class="nav">
      <butoon class="dropbtn">Dropdown 2</button>
      <div class="dropdown-content">
       <a href="#">Subbutton 1</a>
       <a href="#">Subbutton 2</a>
       <a href="#">Subbutton 3</a>
      </div>
    </div>
    
    <div class="nav">
      <butoon class="dropbtn">Dropdown 3</button>
      <div class="dropdown-content">
       <a href="#">Subbutton 1</a>
       <a href="#">Subbutton 2</a>
       <a href="#">Subbutton 3</a>
      </div>
    </div>
    
    <div class="nav">
      <butoon class="dropbtn">Dropdown 4</button>
      <div class="dropdown-content">
       <a href="#">Subbutton 1</a>
       <a href="#">Subbutton 2</a>
       <a href="#">Subbutton 3</a>
      </div>
    </div>
    
    <div class="nav">
      <butoon class="dropbtn">Dropdown 5</button>
      <div class="dropdown-content">
       <a href="#">Subbutton 1</a>
       <a href="#">Subbutton 2</a>
       <a href="#">Subbutton 3</a>
      </div>
    </div>

    【讨论】:

    • 这就是我想做的,问题是我不能让主菜单按钮在悬停子菜单时打开/关闭
    • 我认为上面的代码应该可以工作然后@AllaKonstantinova
    • @AllaKonstantinova 如果我的回答对您有帮助,请批准。谢谢。
    【解决方案2】:

    您使用了绝对错误的 HTML 导航标记,正确且有效的结构是:

    <nav class="nav">
      <ul>
        <li>
          <a href="">1st Level</a>
          <ul>
            <li><a href="">2nd Level</a></li>
            <li><a href="">2nd Level</a></li>
            <li><a href="">2nd Level</a></li>
          </ul>
        </li>
        <li>
          <a href="">1st Level</a>
          <ul>
            <li><a href="">2nd Level</a></li>
            <li><a href="">2nd Level</a></li>
            <li><a href="">2nd Level</a></li>
          </ul>
        </li>
        <li>
          <a href="">1st Level</a>
          <ul>
            <li><a href="">2nd Level</a></li>
            <li><a href="">2nd Level</a></li>
            <li><a href="">2nd Level</a></li>
          </ul>
        </li>
      </ul>
    </nav>
    

    然后就很简单了,只是样式:

    .nav {
      display: block;
      font-family: sans-serif;
    }
    .nav ul {
      padding: 0;
      list-style: none;
    }
    .nav ul li {
      display: inline-block;
      position: relative;
      white-space: nowrap;
    }
    .nav ul li a {
      display: block;
      padding: 8px 16px;
      text-decoration: none;
      color: #000000;
    }
    .nav ul li ul {
      display: none;
      position: absolute;
      top: 100%;
      left: 0;
      border: 1px solid #000000;
    }
    .nav ul li ul li {
      display: block;
    }
    .nav ul li:hover ul {
      display: block;
    }
    

    看这个小提琴https://jsfiddle.net/vtt0qnpt/

    享受

    【讨论】:

      猜你喜欢
      • 2016-02-20
      • 2018-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      • 2016-11-11
      • 2015-01-19
      相关资源
      最近更新 更多