悬停时下拉子菜单消失
Dropdown Submenu Disappears on Hover
虽然我知道有几个关于此问题的讨论,但 none 的解决方案解决了我的问题。无论我做什么,当您停止将鼠标悬停在 parent 上后,我尝试使用的 CSS 子菜单就会消失。我一点也不知道是什么原因造成的,我真的一直盯着这个看,试图找到解决办法,但就是找不到。我尝试添加一个 top: px;到 CSS 中的子菜单,这允许我 select 子菜单选项,但它也移动了菜单,使其看起来覆盖 parent li 并居中,这也是对我没有好处,因为我需要它直接出现在下面。 header 会剪掉它吗?如果是的话,我需要添加什么来改变它?非常感谢所有帮助!
.nav ul {
list-style: none;
background-color: #444;
text-align: center;
padding: 0;
margin: 0;
}
.nav li {
font-size: 1.2em;
line-height: 40px;
text-align: left;
display: none;
}
.nav a {
text-decoration: none;
color: #fff;
display: block;
padding-left: 15px;
transition: .3s background-color;
}
.nav a:hover {
background-color: #005f5f;
}
.nav a.active {
background-color: #aaa;
color: #444;
cursor: default;
}
/* Sub Menus */
.nav li li {
font-size: .8em;
}
@media screen and (min-width: 650px) {
.nav li {
width: 130px;
border-bottom: none;
height: 50px;
line-height: 50px;
font-size: 1.4em;
display: inline-block;
margin-right: -4px;
}
.nav a {
border-bottom: none;
}
.nav > ul > li {
text-align: center;
}
.nav > ul > li > a {
padding-left: 0;
}
/* Sub Menus */
.nav li ul {
position: absolute;
display: none;
width: inherit;
}
.nav li:hover ul {
display: block;
}
.nav li ul li {
display: block;
}
}
#header {
float: left;
background-color: #ffffff;
cursor: default;
padding: 1.75em 2em 0em 0em;
position: relative;
}
<header>
<img id="logo" src="images/logo.jpg" alt="logo">
<div class="nav">
<ul>
<li class="home"><a href="#">Home</a>
</li>
<li class="tutorials"><a href="#">Tutorials</a>
<ul>
<li><a href="#">Tutorial #1@@</a>
</li>
<li><a href="#">Tutorial #2</a>
</li>
<li><a href="#">Tutorial #3</a>
</li>
</ul>
</li>
<li class="about"><a class="active" href="#">About</a>
</li>
<li class="news"><a href="#">Newsletter</a>
<ul>
<li><a href="#">News #1</a>
</li>
<li><a href="#">News #2@@@</a>
</li>
<li><a href="#">News #3</a>
</li>
</ul>
</li>
<li class="contact"><a href="#">Contact</a>
</li>
</ul>
</div>
</header>
我最终确实解决了这个问题,但我认为我应该回来更新我的解决方案,以防它对遇到类似问题的任何人有所帮助。其实很简单。
我不得不在这里添加一个 z-index:
.nav li:hover ul {
display: block;
z-index: 99999;
}
这是向其他用户推荐的,我最初尝试过但没有将其放入 li:hover 因此没有用。我猜是因为高 z-index 迫使它到顶部,所以它通过将子菜单放在它上面来停止导致剪裁的任何东西。我一定是误读了某处的内容,并将 z-index 放在了错误的部分。这里真正的解决方案可能是仔细阅读您的代码!
虽然我知道有几个关于此问题的讨论,但 none 的解决方案解决了我的问题。无论我做什么,当您停止将鼠标悬停在 parent 上后,我尝试使用的 CSS 子菜单就会消失。我一点也不知道是什么原因造成的,我真的一直盯着这个看,试图找到解决办法,但就是找不到。我尝试添加一个 top: px;到 CSS 中的子菜单,这允许我 select 子菜单选项,但它也移动了菜单,使其看起来覆盖 parent li 并居中,这也是对我没有好处,因为我需要它直接出现在下面。 header 会剪掉它吗?如果是的话,我需要添加什么来改变它?非常感谢所有帮助!
.nav ul {
list-style: none;
background-color: #444;
text-align: center;
padding: 0;
margin: 0;
}
.nav li {
font-size: 1.2em;
line-height: 40px;
text-align: left;
display: none;
}
.nav a {
text-decoration: none;
color: #fff;
display: block;
padding-left: 15px;
transition: .3s background-color;
}
.nav a:hover {
background-color: #005f5f;
}
.nav a.active {
background-color: #aaa;
color: #444;
cursor: default;
}
/* Sub Menus */
.nav li li {
font-size: .8em;
}
@media screen and (min-width: 650px) {
.nav li {
width: 130px;
border-bottom: none;
height: 50px;
line-height: 50px;
font-size: 1.4em;
display: inline-block;
margin-right: -4px;
}
.nav a {
border-bottom: none;
}
.nav > ul > li {
text-align: center;
}
.nav > ul > li > a {
padding-left: 0;
}
/* Sub Menus */
.nav li ul {
position: absolute;
display: none;
width: inherit;
}
.nav li:hover ul {
display: block;
}
.nav li ul li {
display: block;
}
}
#header {
float: left;
background-color: #ffffff;
cursor: default;
padding: 1.75em 2em 0em 0em;
position: relative;
}
<header>
<img id="logo" src="images/logo.jpg" alt="logo">
<div class="nav">
<ul>
<li class="home"><a href="#">Home</a>
</li>
<li class="tutorials"><a href="#">Tutorials</a>
<ul>
<li><a href="#">Tutorial #1@@</a>
</li>
<li><a href="#">Tutorial #2</a>
</li>
<li><a href="#">Tutorial #3</a>
</li>
</ul>
</li>
<li class="about"><a class="active" href="#">About</a>
</li>
<li class="news"><a href="#">Newsletter</a>
<ul>
<li><a href="#">News #1</a>
</li>
<li><a href="#">News #2@@@</a>
</li>
<li><a href="#">News #3</a>
</li>
</ul>
</li>
<li class="contact"><a href="#">Contact</a>
</li>
</ul>
</div>
</header>
我最终确实解决了这个问题,但我认为我应该回来更新我的解决方案,以防它对遇到类似问题的任何人有所帮助。其实很简单。
我不得不在这里添加一个 z-index:
.nav li:hover ul {
display: block;
z-index: 99999;
}
这是向其他用户推荐的,我最初尝试过但没有将其放入 li:hover 因此没有用。我猜是因为高 z-index 迫使它到顶部,所以它通过将子菜单放在它上面来停止导致剪裁的任何东西。我一定是误读了某处的内容,并将 z-index 放在了错误的部分。这里真正的解决方案可能是仔细阅读您的代码!