我在做什么?网站的导航栏。我创建了它等等但是当我去其中一个子菜单时它就消失了..
这是我的HTML:
<ul id="menu">
<li><a href="#">Welcome</a></li>
<li><a href="#">Review</a>
<ul>
<li><a href="#">Customer Reviews</a></li>
<li><a href="#">Leave a Review</a></li>
</ul>
</li>
<li><a href="#">Gallery</a></li>
<li><a href="#">Discounts</a>
<ul>
<li><a href="#">Refer us!</a></li>
<li><a href="#">Claim discount</a></li>
</ul>
</li>
<li><a href="#">Send me an email!</a>
</li>
</ul>
</nav>
和我的CSS:
/* nav */
nav{
text-align:center;
}
nav a:visited{
color:black;
}
nav a{
text-decoration:none;
color:black;
}
#menu {
margin:0 auto;
display: inline-block;
list-style-type:none;
padding:0;
}
#menu li {
float: left;
position: relative;
list-style-type: none;
background:white;
border:1px solid black;
margin-left:10px;
margin-top:5px;
border-radius:4px;
}
#menu li a {
font-family:helvetica;
display:block;
padding:10px 10px;
text-decoration:none;
}
#menu li a:hover {
color:orange;
}
#menu li ul {
background: none repeat scroll 0 0 #ffffff;
margin-top:6px;
margin-right:1px;
padding: 2px;
}
/*#menu, #menu ul {
margin:0 auto;
padding: 0;
}*/
#menu li {
float: left;
position: relative;
list-style-type: none;
}
#menu > li:hover > ul {
display: block;
}
#menu > li > ul {
display: none;
position: absolute;
}
#menu li a {
white-space: nowrap;
}
和一个小小的JSFiddle:http://jsfiddle.net/nv741s01/
如果将鼠标悬停在菜单选项[具有子菜单]上足够长的时间然后执行它,它就会起作用,但是每次他们想要访问时,人们都不愿意等待三秒钟子菜单,所以如何解决它,以便它一旦你去它就能工作?
任何帮助都会非常感谢,提前谢谢:)
答案 0 :(得分:3)
这是因为子菜单和菜单之间有一点差距,这是固定的JSFiddle: http://jsfiddle.net/nv741s01/3/
以下是我改变的内容:
#menu li ul {
background: none repeat scroll 0 0 #ffffff;
margin-top: 1px;
margin-right:1px;
padding: 2px;
}
我将margin-top更改为1px。
答案 1 :(得分:1)
元素的margin
不捕获悬停事件。改用填充。进行这些更改:
#menu li {
float: left;
position: relative;
list-style-type: none;
background:white;
padding-left:10px;
padding-top:5px;
margin:0;
}
/* add this rule */
#menu li a {
border:1px solid black;
border-radius:4px;
}
#menu li ul {
background: none repeat scroll 0 0 #ffffff;
margin-top:0px;
margin-right:1px;
padding: 2px;
}
答案 2 :(得分:0)
您正在使用margin
将子菜单放置在远离主项目的位置。由于保证金不是实际元素的一部分,因此它不会触发任何hover
行为。相反,在子padding
元素上使用ul
,因为填充实际上被视为子框的一部分。这样,当鼠标从父级移动到子级时,将使悬停行为始终触发。
你还描述了某个地方有3秒钟的延迟 - 这段代码是不可能的,我无法再显示它。
答案 3 :(得分:0)
您的下拉菜单正在消失,因为当您向下移动鼠标光标时,父菜单项和子菜单项之间存在间隙。
当鼠标离开父li
空间时,它不再适用于悬停状态,因此忽略CSS规则,使子菜单隐藏。
如果有帮助,我倾向于使用边距和填充的组合来“拼合”父菜单和子菜单,以帮助导航。