我有一个导航栏,它是一个自然有多个li的列表。在li元素的悬停时,我有一个出现的div,工作正常,但div似乎只是li的宽度,我尝试将div的宽度设置为985px,但是这会推动导航栏中的所有其他li很远。
<li>
<a id="test" href="#">TEST</a>
<div id="divo" style="height:200px; width:985px; float:left;" class="zebraHover"></div>
</li>
<li><a href="#">Contact Us</a></li>
这个例子我已经设置了宽度,没有宽度设置它工作正常,但是这个代码允许div在仍然在div上时保持可见只能在非常小的区域(li的宽度)工作
$('#divo').hover(function() {
$('#divo').toggleClass('zebraHover');
});
zebraHover只切换display:none;
编辑更多代码!
<ul id="nav">
<li class="current"><a href="">Home</a></li>
<li>
<a id="test" href="#">TEST</a>
<div id="divo" style="height:200px; width:985px; float:left;" class="zebraHover"></div>
</li>
<li><a href="#">Contact Us</a></li>
CSS:
/**********NAV*************/
a {
color: #333;
}
#nav {
margin: 0;
padding: 7px 6px 0;
background: #000 url(images/gradient.png) repeat-x 0 -110px;
line-height: 100%;
-webkit-box-shadow: 0 1px 3px rgba(0,0,0, .4);
-moz-box-shadow: 0 1px 3px rgba(0,0,0, .4);
}
#nav li {
margin: 0 5px;
padding: 0 0 8px;
float: left;
position: relative;
list-style: none;
}
/* main level link */
#nav a {
font-weight: bold;
color: #e7e5e5;
text-decoration: none;
display: block;
padding: 8px 20px;
margin: 0;
-webkit-border-radius: 1.6em;
-moz-border-radius: 1.6em;
text-shadow: 0 1px 1px rgba(0,0,0, .3);
}
#nav a:hover {
background: #000;
color: #fff;
}
#divo
{
background-color:Black;}
/* main level link hover */
#nav li:hover > a {
background: #666 url(images/gradient.png) repeat-x 0 -40px;
color: #444;
border-top: solid 1px #f8f8f8;
-webkit-box-shadow: 0 1px 1px rgba(0,0,0, .2);
-moz-box-shadow: 0 1px 1px rgba(0,0,0, .2);
box-shadow: 0 1px 1px rgba(0,0,0, .2);
text-shadow: 0 1px 0 rgba(255,255,255, 1);
}
#nav .current a
{
color:#ff0;
}
/* sub levels link hover */
#nav ul li:hover a, #nav li:hover li a {
background: none;
border: none;
color: #666;
-webkit-box-shadow: none;
-moz-box-shadow: none;
}
#nav ul a:hover {
background: #0078ff url(images/gradient.png) repeat-x 0 -100px !important;
color: #fff !important;
-webkit-border-radius: 0;
-moz-border-radius: 0;
text-shadow: 0 1px 1px rgba(0,0,0, .1);
}
/* dropdown */
#nav li:hover > ul {
display: block;
}
/* level 2 list */
#nav ul {
display: none;
margin: 0;
padding: 0;
width: 185px;
position: absolute;
top: 35px;
left: 0;
background: #ddd url(images/gradient.png) repeat-x 0 0;
border: solid 1px #b4b4b4;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
-webkit-box-shadow: 0 1px 3px rgba(0,0,0, .3);
-moz-box-shadow: 0 1px 3px rgba(0,0,0, .3);
box-shadow: 0 1px 3px rgba(0,0,0, .3);
}
#nav ul li {
float: none;
margin: 0;
padding: 0;
}
#nav ul a {
font-weight: normal;
text-shadow: 0 1px 0 #fff;
}
/* level 3+ list */
#nav ul ul {
left: 181px;
top: -3px;
}
/* rounded corners of first and last link */
#nav ul li:first-child > a {
-webkit-border-top-left-radius: 9px;
-moz-border-radius-topleft: 9px;
-webkit-border-top-right-radius: 9px;
-moz-border-radius-topright: 9px;
}
#nav ul li:last-child > a {
-webkit-border-bottom-left-radius: 9px;
-moz-border-radius-bottomleft: 9px;
-webkit-border-bottom-right-radius: 9px;
-moz-border-radius-bottomright: 9px;
}
/* clearfix */
#nav:after {
content: ".";
display: block;
clear: both;
visibility: hidden;
line-height: 0;
height: 0;
}
#nav {
display: inline-block;
}
html[xmlns] #nav {
display: block;
}
* html #nav {
height: 1%;
}
.zebraHover
{
display:none;
}
.overflow
{
display: inline;
overflow: visible;
}
像TSN.com这样的东西你如何将鼠标悬停在MLB上并且div下方弹出但不会干扰其他列表项
答案 0 :(得分:0)
在容器(overflow: visible
)上使用<li>
,然后在子容器上应用宽度(<div>
)。
编辑:更新了显示多个列表项的示例。
注意我忘了:你需要在列表项上有一个固定的宽度,否则它会在它们出现时推送它们。 (参见示例)
答案 1 :(得分:0)
因为它是用于导航,所以使用你的代码我会做类似的事情(因为我没有更多的代码来支持我的CSS):
li
{
position: relative;
}
.zebraHover
{
position: absolute;
top: 100%;
z-index: 1;
}