我找到了制作下拉菜单的指南,它说当你停止在主菜单项上停留时,下拉菜单会保持不变。但是,我的菜单消失了,无法按下项目!
正如您所看到的,它是音乐菜单位,具有下拉菜单(或在本例中为“右下方”)菜单。
这里小提琴: http://jsfiddle.net/Gb2aS/
代码在这里:
HTML:
<!DOCTYPE HTML>
<html>
<head>
<link href="stylesheet.css" rel="stylesheet" type="text/css">
<title>Home</title>
</head>
<body>
<div ID="menubox">
<ul>
<li><a href="http://folk.ntnu.no/arnstekl/" class="link">Home</a></li>
<li><a href="#" class="link">Music</a>
<ul>
<li><a href="https://soundcloud.com/arnsteinkleven/" class="link">My music</a></li>
<li><a href="http://folk.ntnu.no/arnstekl/gilberto.html" class="link">The Joao Gilberto project</a></li>
</ul></li>
<li><a href="https://www.github.com/arnstein" class="link">Github</a></li>
<li><a href="http://www.flickr.com/photos/92472314@N03/" class="link">Pictures</a></li>
</ul>
</div>
<div ID="circle">
<p ID="title"> A <br> r <br> n <br> s <br> t <br> e <br> i <br> n </p>
</div>
</body>
</HTML>
CSS:
#menubox
{
width: 8%;
height: 30%;
border: 10% solid #C7D93D;
border-radius: 5%;
position: fixed;
margin-top: 12%;
margin-left: 18%;
font-family: Ubuntu, Lucida console, Futura;
list-style: none;
float: left;
}
#menubox ul li a
{
text-align: left;
font-size: 200%;
color: #FFF0A5;
}
#menubox ul li
{
color: #468966;
font-family: Ubuntu, Lucida console, Futura;
float: left;
margin-right: 10px;
position: relative;
}
#menubox ul
{
color: #468966;
font-family: Ubuntu, Lucida console, Futura;
}
#menubox ul ul
{
position: absolute;
left: -9999px;
list-style: none;
}
#menubox ul ul li
{
float: left;
margin-left: 40%;
position: relative;
font-size: 60%;
text-align: left;
}
#menubox ul ul a
{
white-space: nowrap;
}
#menubox ul li:hover a
{
text-decoration: none;
color: #FFB03B;
}
#menubox ul li:hover ul
{
left: 0;
}
#menubox ul li:hover ul a
{
text-decoration: none;
color: #FFB03B;
}
#menubox ul li:hover ul li a:hover
{
color: #FFB03B;
}
div p
{
color: #FFF0A5;
text-align: center;
position: relative;
vertical-align: middle;
display: inline-block;
margin-top: 300px;
line-height: 60px;
}
#circle
{
border-radius: 100%;
-webkit-border-radius: 100%;
-moz-border-radius: 100%;
background-color: #B64926;
width: 500px;
height: 500px;
display: block;
position: fixed;
margin-top: 9%;
margin-left: 52%;
text-align: center;
}
#title
{
text-color: #FFF0A5;
font-size: 350%;
display: inline;
text-align: center;
}
body
{
height: 100%;
width: 100%;
background-color: #468966;
font-family: Ubuntu, Lucida console, Futura;
}
.link
{
text-color: #FFF0A5;
text-decoration: none;
text-align: left;
}
答案 0 :(得分:2)
问题是因为您的子列表是偏移的,因此存在光标必须从主菜单项和子菜单传递的死区。这将解决您的问题:
#menubox ul li:hover ul
{
left: 0;
top: 0;
z-index:100;
}
正如Daniel Gimenez上面解释的那样,子菜单保持可见的原因是因为它是主要ul项的子项,因此如果将光标放在子菜单上,浏览器会将其视为将光标保持在原始状态上菜单项,以及:hover css仍然存在。
它对于下拉/弹出菜单非常有效,因为即使子对象物理地显示在其父对象之外,它仍然是从代码视点的父对象“内部”。但是如果两者之间存在任何物理差距并且鼠标越过该间隙,则:停用规则将停用,子菜单将消失。
答案 1 :(得分:1)
你的css需要注意很多。所以我把它归结为基础知识。我相信您的问题与主链接和子菜单之间的差距有关。
CSS的解释 *锚是块内联块类型,并且具有父li和ul的确切宽度。 *子菜单在li里面。所以当李的徘徊在他们身上时,他们是可见的。子菜单是可见的,因为它是li的孩子。 *因为锚是100%并伸展li,所以邻接子菜单,所以当移动鼠标时,没有间隙,因此子菜单仍然可见。
#menubox {
position: absolute;
left: 100px;
top: 100px;
}
#menubox ul {
display:inline-block;
padding-left:0;
}
#menubox > ul {
width: 100px;
}
#menubox > ul ul {
position:absolute;
display: none;
width: 200px;
}
#menubox li {
list-style-type:none;
display:block;
}
#menubox li:hover {
background:red;
}
#menubox a {
display:inline-block;
width:100%;
}
#menubox ul li:hover ul {
display: inline-block;
background: orange;
}
答案 2 :(得分:1)
我在弹出的列表中添加了一些填充,实际上是围绕它创建了一个块。当你的鼠标在那个区块上时,它不会消失。
#menubox ul ul
{
position: absolute;
left: -9999px;
padding: 100px;
list-style: none;
}
然而,有一个问题是绘制的圆圈位于列表的上方,但我会留给你。
然而,我确实更喜欢丹尼尔的解决方案。给链接他们自己的类是一个更好的处理它的方法。你最好看看他的解决方案,并根据你的需要进行调整。