在下拉子菜单上设置“活动”

时间:2014-01-24 06:11:34

标签: css drop-down-menu

我一直在尝试在子菜单上设置“活动”,以便您知道您所在的页面。它确实在导航选项卡上设置了“活动”,但我对子菜单没有任何好运。

我没有写这个(超出我的能力范围)。这是马修泰勒的horizontal drop down menu。我试过很多编辑和补充无济于事。非常感激任何的帮助。

css

/* Main menu settings */
#centeredmenu {
    clear:both;
    float:left;
    margin:0;
    padding:0;
    border-bottom:1px solid #000;            /* black line below menu */
    width:100%;
    font-family:Verdana, Geneva, sans-serif; /* Menu font */
    font-size:90%;                           /* Menu text size */
    z-index:1000;                            
    position:relative;
}

/* Top menu items */
#centeredmenu ul {
    margin:0;
    padding:0;
    list-style:none;
    float:right;
    position:relative;
    right:50%;
}

#centeredmenu ul li {
    margin:0 0 0 1px;
    padding:0;
    float:left;
    position:relative;
    left:50%;
    top:1px;
}

#centeredmenu ul li a {
    display:block;
    margin:0;
    padding:.6em .5em .4em;
    font-size:1em;
    line-height:1em;
    background:#ddd;
    text-decoration:none;
    color:#444;
    font-weight:bold;
    border-bottom:1px solid #000;
}

#centeredmenu ul li.active a {
        color:#fff;
        background:#000;
}  



#centeredmenu ul li a:hover {
    background:#36f;                    /* Top menu items background colour */
    color:#fff;
    border-bottom:1px solid #03f;
}


#centeredmenu ul li:hover a,

#centeredmenu ul li.hover a {               /* This line is required for IE 6 and below */
    background:#36f;                    /* Top menu items background colour */
    color:#fff;
    border-bottom:1px solid #03f;
}


/* Submenu items */
#centeredmenu ul ul {
    display:none;                       /* Sub menus are hidden by default */
    position:absolute;
    top:2em;
    left:0;
    float:left;
    right:auto;                        /*resets the right:50% on the parent ul */
    width:10em;                        /* width of the drop-down menus */
}


#centeredmenu ul ul li {
    left:auto;                         /*resets the left:50% on the parent li */
    margin:0;                          /* Reset the 1px margin from the top menu */
    clear:left;
    float:left;
    width:100%;
}


#centeredmenu ul ul li a,

#centeredmenu ul li.active li a,

#centeredmenu ul li:hover ul li a,

#centeredmenu ul li.hover ul li a {        /* This line is required for IE 6 and below */
    font-size:.8em;
    font-weight:normal;                /* resets the bold set for the top level menu items */
    background:#eee;
    color:#444;
    line-height:1.4em;                 /* overwrite line-height value from top menu */
    border-bottom:1px solid #ddd;      /* sub menu item horizontal lines */
    float:left;
    width:100%;
}


#centeredmenu ul ul li a:hover,

#centeredmenu ul li.active ul li a:hover,

#centeredmenu ul li:hover ul li a:hover,

#centeredmenu ul li.hover ul li a:hover {   /* This line is required for IE 6 and below */
    background:#36f;                    /* Sub menu items background colour */
    color:#fff;
    float:left;
}



                                           /* Flip the last submenu */

#centeredmenu ul ul.last {
    left:auto;                         /* reset left:0; value */
    right:0;                           /* Set right value instead */
}


#centeredmenu ul ul.last li {
    float:right;
    position:relative;
    right:.8em;
}

                                           /* Make the sub menus appear on hover */

#centeredmenu ul li:hover ul,

#centeredmenu ul li.hover ul {             /* This line is required for IE 6 and below */
    display:block;                     /* Show the sub menus */
}

HTML

<div id="centeredmenu">
    <ul>
        <li class="active"><a href="#" class="active">menu</a>
            <ul>
                            <li><a href="#">sub_menu1</a></li>
                <li class="active"><a href="#" class="active">sub_menu2</a></li>
                <li><a href="#">sub_menu3</a></li>
            </ul>
        </li>             


        <li><a href="#">menu2</a>
            <ul class="last">
                            <li><a href="#">sub_menu1</a></li>
                <li><a href="#">sub_menu2</a></li>
                <li><a href="#">sub_menu3</a></li>
            </ul>
        </li>

    </ul>
</div>

1 个答案:

答案 0 :(得分:2)

您声明了此样式:

#centeredmenu ul li.active a {
    color:#fff;
    background:#000;
}  

嵌套在a 以下的任何#centeredmenu ul li.active包括嵌套的<{}}将会选择该样式。

除非您使用更具体的选择器覆盖它。你还有进一步的发展:

#centeredmenu ul li.active li a {
   background:#eee;
   color:#444;
}

所以你需要的是一个甚至 more 特定的选择器来处理活动的子菜单a

#centeredmenu ul li.active li.active a {
    /* your sub-menu active styles go here */
}  

只是一个FYI,当你的选择链变得那么长而具体时,我通常会建议它是时候核对它并重写它。它通常是CSS文件的标志,它已被维护和修改超出其使用寿命。现在它需要花费更多的时间来修改一些东西而不是重写。 :)