使用position时绝对不显示下拉菜单;

时间:2012-09-01 03:03:42

标签: html css

我刚刚将我的网站变成了一个响应式布局,一路上我设法让我的下拉菜单无效。当鼠标悬停在'Drop-downs'上时,除非我使用position:relative,否则它们不会显示。他们在使用position之前工作:绝对 - 但似乎它们现在只适用于位置相对。使用相对时,它使用的宽度会混淆导航栏。

使用亲戚:http://d.pr/i/tp5R
使用绝对:http://d.pr/i/j7r1

我的子菜单的CSS

div.left_first_header ul.sub-menu {
    width: 125px;
    top: 14px;
    z-index: 2;
    height: 100%;
    position: absolute;
    -webkit-border-radius: 0px 0px 4px 4px;
    -moz-border-radius: 0px 0px 4px 4px;
    background: url(images/drop_down_bg.jpg);
    padding-left: 15px;
    padding-right: 15px;
    background-repeat: repeat;
}

jQuery用于下拉功能

jQuery(document).ready(function ($) {
    jQuery("ul.dropdown li").hover(function() {
        $('ul:first',this).css('visibility', 'visible');
    }, function() {
        jQuery(this).removeClass("hover");
        jQuery('ul:first',this).css('visibility', 'hidden');
    });
});

我的网站
http://wpvault.com/kahlam/

考虑到凌晨4点,我可能犯了一个非常愚蠢的错误。

如果我错过了什么,我道歉。

1 个答案:

答案 0 :(得分:2)

没有必要为此使用jQuery。尝试使用CSS :hover

<div class="left_first_header">
    <ul class="dropdown">
        Dropdown
        <ul class="sub-menu">
            <li>item</li>              
        </ul>
    </ul>
</div>

CSS:

.left_first_header .sub-menu {
    width: 125px;
    top: 14px;
    z-index: 2;
    height: 100%;
    position: absolute;
    -webkit-border-radius: 0px 0px 4px 4px;
    -moz-border-radius: 0px 0px 4px 4px;
    background: url(images/drop_down_bg.jpg);
    padding-left: 15px;
    padding-right: 15px;
    background-repeat: repeat;
    display: none;
}


.left_first_header .dropdown:hover .sub-menu {
    display: block;
}​

CSS演示:http://jsfiddle.net/TZbfJ/

编辑:但是如果你仍然想使用jquery,试试这个:

.left_first_header .sub-menu {
    width: 125px;
    top: 14px;
    z-index: 2;
    height: 100%;
    position: absolute;
    -webkit-border-radius: 0px 0px 4px 4px;
    -moz-border-radius: 0px 0px 4px 4px;
    padding-left: 15px;
    padding-right: 15px;
    background-repeat: repeat;
    display: none;
    background-color: blue;     
    margin-top: 4px;    
}

.dropdown {
    background-color: red;
    position: relative;
    margin: 20px;
}

JS:

$(function(){
    $(".dropdown").mouseenter(function(){
        $(this).find(".sub-menu").show();        
    }).mouseleave(function(){
       $(this).find(".sub-menu").hide();
    });
})

jQuery demo:http://jsfiddle.net/63hkm/