li中不包含其他li对象的div

时间:2011-09-02 19:44:55

标签: css navigation

我有一个导航栏,它是一个自然有多个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下方弹出但不会干扰其他列表项

2 个答案:

答案 0 :(得分:0)

在容器(overflow: visible)上使用<li>,然后在子容器上应用宽度(<div>)。

编辑:更新了显示多个列表项的示例。

注意我忘了:你需要在列表项上有一个固定的宽度,否则它会在它们出现时推送它们。 (参见示例)

<强> Working example to visualize my point

答案 1 :(得分:0)

因为它是用于导航,所以使用你的代码我会做类似的事情(因为我没有更多的代码来支持我的CSS):

li
{
  position: relative;
}

.zebraHover
{
  position: absolute;
  top: 100%;
  z-index: 1;
}