代码之家  ›  专栏  ›  技术社区  ›  Rob Gray

两级水平菜单突出显示当前页面

  •  0
  • Rob Gray  · 技术社区  · 14 年前

    我用CSS和HTML(ul's等)制作了一个两级菜单。我想要的是要选择的顶层(使用“selected”类)和与当前页面对应的第二层中的项,以使类处于“active”状态(仅粗体)。

    例如,当用户导航到“/维护”时/公司.aspx,我希望选择“维护”菜单项,“公司”子菜单项为粗体。

    第一级选择有效,粗体显示有效,但是我无法显示实际的子菜单(第二级)。

    CSS格式

    #menu
    {
        margin:0;
        padding:0;
        list-style:none;
        position:relative;
        background:url(../images/menubg.gif) repeat-x;
        height:32px;
        text-transform:uppercase;
        font-family: Arial, Helvetica, sans-serif;
    }
    #menu li
    {
        float:left;
        padding:0;
        margin:0;
    }
    #menu a
    {
        text-decoration:none;    
        padding:10px 15px;
        display:block;
        color:#ffffff;
    }
    #menu li:hover a, a.selected
    {
        background:#ffffff;
        color: #666666 !important;
    }
    #menu li span
    {
        float:left;
        padding: 5px 0;
        position:absolute;
        display:none;
        left:0;
        top:31px;
        background:#ffffff;
        color: #000;
        width: 100%;
    }
    #menu li:hover span, .selectedSubMenu { display:block; }
    #menu li span a { display: inline; padding: 5px 15px; } /*--Since we declared a link style on the parent list link, we will correct it back to its original state--*/
    #menu li span a:hover {text-decoration: underline;}
    .active { font-weight: bold; }
    

    <ul id="menu">            
        <li><a href="#" id="contracts">Contracts</a>
            <span>
                <a href="/contracts/submitcontract.aspx">New Contract</a>
                <a href="/contracts/search.aspx">Find Contract</a>
            </span>
        </li>
        <li><a href="#" id="invoicing">Invoices</a>
            <span>
                <a href="/invoicing/invoicerun.aspx">Invoices Run</a>
                <a href="/invoicing/invoicerun.aspx">Invoicing History</a>
            </span>
        </li>
        <li><a href="#" id="maintenance">Maintenance</a>
            <span>
                <a href="/maintenance/account.aspx">Accounts</a>
                <a href="/maintenance/agent/search.aspx">Agents</a>
                <a href="/maintenance/company.aspx">Companies</a>
                <a href="/maintenance/contact.aspx">Contacts</a>
                <a href="/maintenance/networks.aspx">Networks</a>
                <a href="/maintenance/plans.aspx">Plans</a>
            </span>
        </li>
        <li><a href="#" id="admin">Control Panel</a>
            <span>
                <a href="/admin/userlist.aspx">Users</a>
                <a href="/admin/systemsettings.aspx">System Settings</a>
            </span>
        </li>
    </ul>
    

    JQUERY查询

    function markActiveLink() {
        var path = location.pathname.substring(1);
    
        if (path) {
            $('#menu li > a').each(function() {
                var $category = $(this).attr('id');
                if (path.indexOf($category) > -1) {
                    $(this).addClass('selected');
    
                -->    $(this).siblings('span:first').addClass('selectedSubMenu');
    
                    $('#menu li span a[@href="/' + path + '"]').addClass('active');                        
                }
            });              
        }
    }
    
    $(document).ready(markActiveLink);
    
    1 回复  |  直到 14 年前
        1
  •  1
  •   Rob Gray    14 年前

    我通过对萤火虫的调查搞清楚了。我需要给我的css添加一些特殊性。

    #menu li:hover span, .selectedSubMenu { display:block; }
    

    成为

    #menu li:hover span, #menu li span.selectedSubMenu { display:block; }
    

    我不得不添加一些css来改变锚的颜色

    #menu li span.selectedSubMenu a { color:#666666; }
    

    http://www.htmldog.com/guides/cssadvanced/specificity/ 帮我解释一下。