悬停时显示DIV子菜单下拉菜单

问题描述:

我正尝试使用DIV创建非常简单的悬停/下拉菜单,没有UL/LI。 我目前的代码显示菜单有3个选项,但我需要的是在链接2下有一个子菜单。 这是我目前的代码。悬停时显示DIV子菜单下拉菜单

.dropbtn { 
 
     background-color: #4CAF50; 
 
     color: white; 
 
     padding: 0px; 
 
     font-size: 12px; 
 
     border: none; 
 
     cursor: pointer; 
 
    } 
 
    
 
    .dropdown { 
 
     margin-top:200px; 
 
     position: relative; 
 
     display: inline-block; 
 
    } 
 
    
 
    .dropdown-content { 
 
     display: none; 
 
     position: absolute; 
 
     background-color: #f9f9f9; 
 
     min-width: 30px; 
 
     box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); 
 
     z-index: 1; 
 
    } 
 
    
 
    .dropdown-content a { 
 
     color: black; 
 
     padding: 12px 16px; 
 
     text-decoration: none; 
 
     display: block; 
 
    } 
 
    
 
    .dropdown-content a:hover { 
 
     background-color: #f1f1f1; 
 
    } 
 
    
 
    .dropdown:hover .dropdown-content { 
 
     display: block; 
 
     bottom: 100%; 
 
    } 
 
    
 
    .dropdown:hover .dropbtn { 
 
     background-color: #3e8e41; 
 
    } 
 
    
 
    .subdiv { 
 
     display:none; 
 
    } 
 
    
 
    .dropdown:hover .subdiv { 
 
     display:block; 
 
    }
<div class="dropdown"> 
 
     <button class="dropbtn">^</button> 
 
     <div class="dropdown-content"> 
 
     <a href="#">Link 1</a> 
 
     <a href="#">Link 2</a> 
 
     <a href="#">Link 3</a> 
 
     </div> 
 
    </div>

我想什么做的是这样的:

<div class="dropdown"> 
    <button class="dropbtn">^</button> 
    <div class="dropdown-content"> 
    <a href="#">Link 1</a> 
    <a href="#">Link 2</a> 
     <div class="submenu"> 
      <a href="#">SubLink 1</a> 
     </div> 
    <a href="#">Link 3</a> 
    </div> 
</div> 

凡SUBLINK 1项显示,当你将鼠标悬停在链接2,但一切我都试过没有按”工作,所以我希望别人可以帮助。

你可以用下面的方法做到这一点,你需要做的就是设置一个包含子菜单和悬停链接的div(这里是submenu_holder),下一步很简单,因为它与submenu_holder比下拉。

.dropbtn { 
 
     background-color: #4CAF50; 
 
     color: white; 
 
     padding: 0px; 
 
     font-size: 12px; 
 
     border: none; 
 
     cursor: pointer; 
 
    } 
 
    
 
    .dropdown { 
 
     margin-top:200px; 
 
     position: relative; 
 
     display: inline-block; 
 
    } 
 
    
 
    .dropdown-content { 
 
     display: none; 
 
     position: absolute; 
 
     background-color: #f9f9f9; 
 
     min-width: 30px; 
 
     box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); 
 
     z-index: 1; 
 
    } 
 
    
 
    .dropdown-content a { 
 
     color: black; 
 
     padding: 12px 16px; 
 
     text-decoration: none; 
 
     display: block; 
 
    } 
 
    
 
    .dropdown-content a:hover { 
 
     background-color: #f1f1f1; 
 
    } 
 
    
 
    .dropdown:hover .dropdown-content { 
 
     display: block; 
 
     bottom: 100%; 
 
    } 
 
    
 
    .dropdown:hover .dropbtn { 
 
     background-color: #3e8e41; 
 
    } 
 
    
 
    .subdiv { 
 
     display:none; 
 
    } 
 
    
 
    .dropdown:hover .subdiv { 
 
     display:block; 
 
    } 
 

 
.submenu { 
 
    display:none; 
 
    position:absolute; 
 
    left:60px; 
 
    top:0px; 
 
} 
 

 
.submenu_holder:hover .submenu { 
 
    display:block; 
 
} 
 

 
.submenu_holder { 
 
    position:relative; 
 
}
<div class="dropdown"> 
 
    <button class="dropbtn">^</button> 
 
    <div class="dropdown-content"> 
 
    <a href="#">Link 1</a> 
 
    <div class="submenu_holder"> 
 
     <a href="#">Link 2</a> 
 
     <div class="submenu"> 
 
     <a href="#">SubLink 1</a> 
 
     </div> 
 
    </div> 
 
    <a href="#">Link 3</a> 
 
    </div> 
 
</div>

+0

您的代码e xample效果最好,是我最终使用的!你真棒! –

你在你的代码有几个问题。

对于初学者来说,子菜单的类名不对应。

下面,我裹子菜单的内容链接2.在您需要作进一步的调整,使悬停效果更加平滑...

body { 
 
    /* for demo purposes */ 
 
    display: flex; 
 
    align-items: center; 
 
    justify-content: center; 
 
    height: 100vh; 
 
} 
 

 
.dropbtn { 
 
    background-color: #4CAF50; 
 
    color: white; 
 
    padding: 0px; 
 
    font-size: 12px; 
 
    border: none; 
 
    cursor: pointer; 
 
    /* changed because the target was infuriatingly small for demo */ 
 
    padding: 1em; 
 
} 
 

 
.dropdown { 
 
    position: relative; 
 
    display: inline-block; 
 
} 
 

 
.dropdown-content { 
 
    display: none; 
 
    position: absolute; 
 
    background-color: #f9f9f9; 
 
    min-width: 30px; 
 
    box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); 
 
    z-index: 1; 
 
} 
 

 
.dropdown-content a { 
 
    color: black; 
 
    padding: 12px 16px; 
 
    text-decoration: none; 
 
    display: block; 
 
} 
 

 
.dropdown-content a:hover, 
 
.submenu:hover { 
 
    background-color: #f1f1f1; 
 
} 
 

 
.dropdown:hover .dropdown-content { 
 
    display: block; 
 
    bottom: 100%; 
 
} 
 

 
.dropdown:hover .dropbtn { 
 
    background-color: #3e8e41; 
 
} 
 

 
.submenu { 
 
    padding: 12px 16px; 
 
} 
 

 
.submenu-content { 
 
    display: none; 
 
} 
 

 
.submenu-content a { 
 
    padding: 12px 0; 
 
} 
 

 
.submenu:hover .submenu-content { 
 
    display: block; 
 
}
<div class="dropdown"> 
 
    <button class="dropbtn">^</button> 
 
    <div class="dropdown-content"> 
 
    <a href="#">Link 1</a> 
 
    <a href="#">Link 2</a> 
 
    <a href="#">Link 3</a> 
 
    </div> 
 
</div> 
 
What I would like to do is this: 
 

 
<div class="dropdown"> 
 
    <button class="dropbtn">^</button> 
 
    <div class="dropdown-content"> 
 
    <a href="#">Link 1</a> 
 
    <div class="submenu">Link 2 
 
     <div class="submenu-content"> 
 
     <a href="#">SubLink 1</a> 
 
     </div> 
 
    </div> 
 
    <a href="#">Link 3</a> 
 
    </div> 
 
</div>

+0

你有一个HREF的div;),与我的相同的方法,但没有“侧”菜单 – Neil

+0

@尼尔很好的发现,我删除了..谢谢!是的,同样的方法,只有这样做真的:) – sol

这是我最终使用的代码,最适合我的情况:

<style> 

.dropbtn { 
    background-color: #4CAF50; 
    color: white; 
    padding: 0px; 
    font-size: 12px; 
    border: none; 
    cursor: pointer; 
} 

.dropdown { 
    position: relative; 
    display: inline-block; 
} 

.dropdown-content { 
    display: none; 
    position: absolute; 
    background-color: #f9f9f9; 
    min-width: 30px; 
    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); 
    z-index: 1; 
} 

.dropdown-content a { 
    color: black; 
    padding: 12px 16px; 
    text-decoration: none; 
    display: block; 
} 

.dropdown-content a:hover { 
    background-color: #f1f1f1; 
} 

.dropdown:hover .dropdown-content { 
    display: block; 
    bottom: 100%; 
} 

.dropdown:hover .dropbtn { 
    background-color: #3e8e41; 
} 

.subdiv { 
    display:none; 
} 

.dropdown:hover .subdiv { 
    display:block; 
} 

.submenu { 
    display:none; 
    position:absolute; 
    left:86px; 
    top:0px; 
    background-color: #f9f9f9; 
    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); 
    z-index: 1; 
} 

.submenu_holder:hover .submenu { 
    display:block; 
} 

.submenu_holder { 
    position:relative; 
} 

</style> 


<div class="dropdown"> 
    <button class="dropbtn">^</button> 
    <div class="dropdown-content"> 
    <a href="#">Link 1</a> 
    <div class="submenu_holder"> 
     <a href="#">Link 2</a> 
     <div class="submenu"> 
     <a href="#">SubLink 1</a> 
     </div> 
    </div> 
    <a href="#">Link 3</a> 
    </div> 
</div>