【发布时间】:2011-12-16 13:05:05
【问题描述】:
我正在寻找可以具有不同背景图像的嵌套菜单,下面是执行所有操作的代码,在悬停时显示具有不同颜色的子节点,但我想要每个链接的不同背景图像和子节点的单独图像。目前它使用颜色工作。 (链接的每张图片的大小会有所不同)
<div class="TopMenu">
<ul class="myMenu">
<li><a href="Home.aspx">Home</a></li>
<li><a href="About-Us.aspx">About us</a></li>
<li><a href="Products-For-Sale.aspx">For sale</a>
<ul>
<li><a href="Bedsheets-For-Sale.aspx">Bedsheets</a></li>
<li><a href="Rugs-For-Sale.aspx">Rugs</a></li>
<li><a href="Accessories-For-Sale.aspx">Accessories</a></li>
</ul>
</li>
<li><a href="News.aspx">News</a></li>
<li><a href="Services.aspx">Services</a></li>
</ul>
</div><!--TopMenu-->
/*style the main menu*/
#header .myMenu {
margin:0px;
padding:0px;
list-style:none;
text-transform:uppercase;
position:absolute;
z-index:300;
left:28px;
top:108px;
width:952px;
}
#header .myMenu li
{
list-style: none;
float: left;
background-color: #4dafde;
line-height: 25px;
margin-right: 3px;
}
#header .myMenu li a:link, .myMenu li a:visited
{
display: block;
text-decoration: none;
background-color: #4dafde;
padding: 0.5em 2em 0.5em 2em;
margin: 0 0 0 0;
}
#header .myMenu li a:hover {
background-color: #A4D6EE;
}
/*style the sub menu*/
#header .myMenu li ul
{
position: absolute;
visibility: hidden;
margin: 0;
padding: 0;
background-color: #4dafde;
}
#header .myMenu li ul li {
display:inline;
float:none;
}
#header .myMenu li ul li a:link, .myMenu li ul li a:visited
{
display:block;
width: auto;
text-decoration: none;
}
#header .myMenu li ul li a:hover
{
background-color: #A4D6EE !important;
}
任何帮助或建议将不胜感激。 谢谢
【问题讨论】:
-
对每个菜单项使用越来越长的嵌套选择器将使其难以维护。如果您想在 3 个月内返回并更改菜单中第 5 个元素的颜色/图像怎么办。你如何找到它在 css 中的哪个选择器?您可以使用更精确的选择器,如下面的答案所述。
-
但是第 n 个孩子在 IE 7、8 中不支持。否则尝试一下会很棒:类似 ul li:nth-child(n+1) { background-image: url ('/images/01.png'); }
-
所以给每个元素添加一个单独的类或id。无论如何,这是一个更清洁、更易于维护的解决方案。例如。您无需查看 HTML 即可知道更改 CSS 会做什么。
标签: jquery asp.net css menu navigation