CSS 只有子菜单在鼠标移出时关闭
CSS only sub-menu closing on a mouseout
即使将鼠标悬停在子菜单本身上,如何让子菜单保持不变?现在子菜单关闭,因为它链接到 a 元素的 :hover。
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<style type="text/css">
.flex
{
display:flex;
flex-direction: row;
}
#top-menu-1 > div
{
position:relative;
}
#top-menu-1 > div > a
{
font-size: 24px;
padding:15px 15px;
color:#000;
text-decoration:none;
}
#top-menu-1 > div > a:hover + div
{
display:block;
}
#top-menu-1 > div > div
{
position: absolute;
margin-top:10px;
display:none;
box-sizing: border-box;
width: 900px;
height: 327px;
border-radius: 6px;
box-shadow: 0 0 17px 0 rgba(0, 0, 0, 0.22);
background-color: #ffffff;
padding:20px;
z-index: 1;
}
</style>
</head>
<body>
<div id="top-menu-1" class="flex">
<div>
<a href="#">Menu 1</a>
<div>
Sub-Menu Content
</div>
</div>
<div>
<a href="#">Menu 2</a>
</div>
<div>
<a href="#">Menu 3</a>
</div>
<div>
<a href="#">Menu 4</a>
</div>
</div>
</body>
</html>
.flex {
display: flex;
flex-direction: row;
}
#top-menu-1>div {
position: relative;
}
#top-menu-1>div>a {
font-size: 24px;
padding: 15px 15px;
color: #000;
text-decoration: none;
}
#top-menu-1>div>a:hover+div {
display: block;
}
#sub-menu:hover {
display: block;
}
#top-menu-1>div>div {
position: absolute;
margin-top: 10px;
display: none;
box-sizing: border-box;
width: 900px;
height: 327px;
border-radius: 6px;
box-shadow: 0 0 17px 0 rgba(0, 0, 0, 0.22);
background-color: #ffffff;
padding: 20px;
z-index: 1;
}
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
</head>
<body>
<div id="top-menu-1" class="flex">
<div>
<a href="#">Menu 1</a>
<div id="sub-menu">
Sub-Menu Content
</div>
</div>
<div>
<a href="#">Menu 2</a>
</div>
<div>
<a href="#">Menu 3</a>
</div>
<div>
<a href="#">Menu 4</a>
</div>
</div>
</body>
</html>
请更换。
#top-menu-1 > div > a:hover + div
{
display:block;
}
通过
#top-menu-1 > div:hover > div{ display: block; }
请检查这是否适合您。
此行为背后的原因是,一旦 <a>
的范围结束,悬停效果就不再运行并消失 div
,因此为了访问 div
的内部内容,您可以在它的悬停范围内也为 div
复制 display:block
。
.flex
{
display:flex;
flex-direction: row;
}
#top-menu-1 > div
{
position:relative;
}
#top-menu-1 > div > a
{
font-size: 24px;
padding:15px 15px;
color:#000;
text-decoration:none;
}
#top-menu-1 > div > a:hover + div,
#top-menu-1 > div > a + div:hover
{
display:block;
}
#top-menu-1 > div > div
{
position: absolute;
margin-top:10px;
display:none;
box-sizing: border-box;
width: 900px;
height: 327px;
border-radius: 6px;
box-shadow: 0 0 17px 0 rgba(0, 0, 0, 0.22);
background-color: #ffffff;
padding:20px;
z-index: 1;
}
<div id="top-menu-1" class="flex">
<div>
<a href="#">Menu 1</a>
<div>
Sub-Menu Content
</div>
</div>
<div>
<a href="#">Menu 2</a>
</div>
<div>
<a href="#">Menu 3</a>
</div>
<div>
<a href="#">Menu 4</a>
</div>
</div>
即使将鼠标悬停在子菜单本身上,如何让子菜单保持不变?现在子菜单关闭,因为它链接到 a 元素的 :hover。
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<style type="text/css">
.flex
{
display:flex;
flex-direction: row;
}
#top-menu-1 > div
{
position:relative;
}
#top-menu-1 > div > a
{
font-size: 24px;
padding:15px 15px;
color:#000;
text-decoration:none;
}
#top-menu-1 > div > a:hover + div
{
display:block;
}
#top-menu-1 > div > div
{
position: absolute;
margin-top:10px;
display:none;
box-sizing: border-box;
width: 900px;
height: 327px;
border-radius: 6px;
box-shadow: 0 0 17px 0 rgba(0, 0, 0, 0.22);
background-color: #ffffff;
padding:20px;
z-index: 1;
}
</style>
</head>
<body>
<div id="top-menu-1" class="flex">
<div>
<a href="#">Menu 1</a>
<div>
Sub-Menu Content
</div>
</div>
<div>
<a href="#">Menu 2</a>
</div>
<div>
<a href="#">Menu 3</a>
</div>
<div>
<a href="#">Menu 4</a>
</div>
</div>
</body>
</html>
.flex {
display: flex;
flex-direction: row;
}
#top-menu-1>div {
position: relative;
}
#top-menu-1>div>a {
font-size: 24px;
padding: 15px 15px;
color: #000;
text-decoration: none;
}
#top-menu-1>div>a:hover+div {
display: block;
}
#sub-menu:hover {
display: block;
}
#top-menu-1>div>div {
position: absolute;
margin-top: 10px;
display: none;
box-sizing: border-box;
width: 900px;
height: 327px;
border-radius: 6px;
box-shadow: 0 0 17px 0 rgba(0, 0, 0, 0.22);
background-color: #ffffff;
padding: 20px;
z-index: 1;
}
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
</head>
<body>
<div id="top-menu-1" class="flex">
<div>
<a href="#">Menu 1</a>
<div id="sub-menu">
Sub-Menu Content
</div>
</div>
<div>
<a href="#">Menu 2</a>
</div>
<div>
<a href="#">Menu 3</a>
</div>
<div>
<a href="#">Menu 4</a>
</div>
</div>
</body>
</html>
请更换。
#top-menu-1 > div > a:hover + div
{
display:block;
}
通过
#top-menu-1 > div:hover > div{ display: block; }
请检查这是否适合您。
此行为背后的原因是,一旦 <a>
的范围结束,悬停效果就不再运行并消失 div
,因此为了访问 div
的内部内容,您可以在它的悬停范围内也为 div
复制 display:block
。
.flex
{
display:flex;
flex-direction: row;
}
#top-menu-1 > div
{
position:relative;
}
#top-menu-1 > div > a
{
font-size: 24px;
padding:15px 15px;
color:#000;
text-decoration:none;
}
#top-menu-1 > div > a:hover + div,
#top-menu-1 > div > a + div:hover
{
display:block;
}
#top-menu-1 > div > div
{
position: absolute;
margin-top:10px;
display:none;
box-sizing: border-box;
width: 900px;
height: 327px;
border-radius: 6px;
box-shadow: 0 0 17px 0 rgba(0, 0, 0, 0.22);
background-color: #ffffff;
padding:20px;
z-index: 1;
}
<div id="top-menu-1" class="flex">
<div>
<a href="#">Menu 1</a>
<div>
Sub-Menu Content
</div>
</div>
<div>
<a href="#">Menu 2</a>
</div>
<div>
<a href="#">Menu 3</a>
</div>
<div>
<a href="#">Menu 4</a>
</div>
</div>