悬停/选定的菜单显示背景

时间:2013-04-16 06:12:42

标签: jquery html5 css3

我需要在ul li的背景上留下一些悬停效果。

图片:

HTML

<div id="topnav">
        <ul class="nav clearfix">
            <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-2 current_page_item menu-item-25">
            <a href="http://localhost/">Home</a>
            </li>
            <li id="menu-item-45" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-45">
                <a href="http://localhost/">Menu2</a>
            </li>
            <li id="menu-item-98" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-98">
                <a href="http://localhost/">Menu3</a>
            </li>
            <li id="menu-item-96" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-96">
                <a href="http://localhost/">Menu4</a>
            </li>
            <li id="menu-item-97" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-97">
                <a href="http://localhost/">Menu5</a>
            </li>
        </ul>
    <div>

CSS

 #topnav {
        font-size: 8pt;
        font-weight: bold;
        margin-top: 2%;
        border: 1px solid #DDDDDD;
        float: left;
        font-size: 8pt;
        margin-bottom: 0;
        margin-left: 0;
        margin-right: 0;
        margin-top: 7% !important;
        opacity: 0.8;
        padding: 0;
        width: 60%;
    }
    #topnav ul {

        line-height: 1;
        list-style: none outside none;
        margin: 0;
        padding: 0;
         display: block;
    }
    #topnav ul li {
        float: left;
        width: auto;
        margin:10px;
    }
    #topnav ul {
        line-height: 1;
        list-style: none outside none;
    }

3 个答案:

答案 0 :(得分:1)

据我所知,css3你无法选择元素的父元素(我可能错了)。使用JQuery非常简单$("#topnav a:hover").parent(),这将选择包含a:hover。

的li

希望我理解这个问题,这对你有帮助。

JQuery将li着色为白色的示例,您必须调整li的大小,以便可以看到此效果:

$(function(){
$("#topnav a").mouseenter(function(){
        $("#topnav a:hover").parent().css("background-color","#FFFFFF");
    }).mouseleave(function(){
        $("#topnav a:hover").parent().css("background-color","#CBBBA1");
    });
});

DEMO

答案 1 :(得分:1)

像这样:jsfiddle.net/kaGvs/5? :)

你可以给“a”标签一个减去边距和边框,这应该相互抵消。

#topnav ul li a {
    border-top: 15px solid transparent;
    border-bottom : 15px solid transparent;
    margin: -25px 0;
    display:block;
    line-height: 30px;
}

#topnav ul a:hover, #topnav ul ul a:hover {
    color: #0A0A0A;
    background-color: #CBBBA1;
    border-color: white;
}

答案 2 :(得分:0)

试试这个

#topnav ul li:hover{
    background:white; 
}
#topnav ul li:hover a{
    background:#d8b038; 
}

<强> DEMO

注意: 根据您的用户界面更改排名。我刚刚给出了悬停效果。