Why doesn't hover work and styles don't show up?
P粉842215006
2023-08-02 20:04:07
<p>I'm designing a navigation bar, but my mouseover isn't working. When I hover over the "man" item in my dropdown menu, its hover style is not working and the style is not shown in the inspector.有什么问题吗?这是我的HTML代码:</p>
<p><br /></p>
<pre class="brush:css;toolbar:false;">/* Navbar container */
body {
margin: 0;
padding: 0;
box-sizing: border-box;
}
li {
text-decoration: none;
}
.nav-container {
direction: rtl;
text-align: right
}
.navbar {
overflow: hidden;
background-color: #333;
font-family: Arial;
}
/* Links inside the navbar */
.navbar a {
float: right;
font-size: 16px;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
/* The dropdown container */
.dropdown {
float: right;
overflow: hidden;
}
/* Dropdown button */
.dropdown .dropbtn {
font-size: 16px;
border: none;
outline: none;
color: white;
padding: 14px 16px;
background-color: inherit;
font: inherit;
/* Important for vertical align on mobile phones */
margin: 0;
/* Important for vertical align on mobile phones */
}
/* Dropdown content (hidden by default) */
.dropdown-content {
display: none;
position: absolute;
background-color: #f9f9f9;
width: 100%;
left: 0;
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
z-index: 1;
}
.dropdown:hover .dropdown-content {
display: block;
}
.megamenu-container {
background-color: aqua;
width: 100%;
}
.megmenu {
width: 100%;
}
.megamenu-title {
width: 20%;
background-color: blue;
display: inline-block;
padding: 5px 15px;
vertical-align: top;
}
.megamenu-subitems-default {
width: 70%;
background-color: blueviolet;
display: inline-block;
padding: 15px;
}
.megamenu-item {
float: unset !important;
padding: 0 !important;
}
.man:hover .megamenu-subitems-default {
visibility: hidden;
}
#subitems {
display: inline-block;
visibility: hidden;
background-color: yellowgreen;
width: 70%;
}
.man:hover #subitems {
visibility: visible;
}
.test {
color: yellow;
}
.man:hover .test {
color: wheat;
}</pre>
<pre class="brush:html;toolbar:false;"><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="./megamenu.css">
<title>Document</title>
</head>
<body>
<div class="nav-container">
<div class="navbar">
<a href="#home">Home</a>
<a href="#news">News</a>
<div class="dropdown">
<button class="dropbtn">Dropdown
<i class="fa fa-caret-down"></i>
</button>
<div class="dropdown-content">
<div class="megamenu-container">
<div class="megmenu">
<div class="megamenu-title">
<ul>
<li >
<div class="man">
<a class="megamenu-item" href="#">man</a>
</div>
</li>
<li id="woman">
<a class="megamenu-item" href="#">woman</a>
</li>
<li id="kid">
<a class="megamenu-item" href="#">kid</a>
</li>
</ul>
</div>
<div class="megamenu-subitems-default">
<p>hello-default</p>
</div>
<div class="megamenu-subitems-test" id="subitems">
<p>hello-1</p>
</div>
<div class="megamenu-subitems">
<p>hello-2</p>
</div>
<div class="megamenu-subitems">
<p>hello-3</p>
</div>
<div class="megamenu-subitems">
<p>hello-4</p>
</div>
</div>
</div>
<p class="test">test</p>
</div>
</div>
</div>
</div>
</body>
</html></pre>
<p><br /></p>
<p>当我悬停在“man”项目在我的下拉菜单,它的悬停样式不工作,不显示样式在Inspect</p>
In your CSS file you have this rule:
However, #subitems are not descendants of .man. You need to place #subitems on the same level as .man, or as a descendant of it.
This CSS rule specifies that an element with id #subitems will become visible when .hover is over one of its ancestors with class .man; however, in your HTML, .man is a A div that is a child element of .megamenu-item.
To hide the default child div, try replacing this selector:
with:
For each menu item's subitems, I recommend that you either give each subitem div a unique ID and control their visibility using JavaScript, or change your layout to make the .megamenu-subitems div with the li element be at the same level and use sibling selectors, or make them descendants of the li element.