我一直在尝试在子菜单上设置“活动”,以便您知道您所在的页面。它确实在导航选项卡上设置了“活动”,但我对子菜单没有任何好运。
我没有写这个(超出我的能力范围)。这是马修泰勒的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>
答案 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文件的标志,它已被维护和修改超出其使用寿命。现在它需要花费更多的时间来修改一些东西而不是重写。 :)