我花了几个小时才找到一个CSS然后jQuery解决方案。我到处都看过这个,但不知道如何从头开始做。
我想要做的是,我有一个列表菜单,另一个列表,另一个列表。所以这是一个三级水平菜单。
我想要做的是,当选择一个孩子时,我想改变父li a
的背景颜色,所以如果你知道我的意思,它看起来像面包屑。
这是我目前的css
.menu {
z-index: 9999;
position:relative;
background-image: url(images/top_nav_lili_repeat.png);
background-repeat: repeat-x; height:38px;
font-family: 'Open Sans', sans-serif;
text-transform:uppercase;
}
.menu ul ul {
display: none;
}
.menu ul li:hover > ul {
display: block;
}
.menu ul {
color: #797979;
padding: 0 0px;
list-style: none;
position: relative;
display: inline-table;
}
.menu ul:after {
content: "";
clear: both;
display: block;
}
.menu ul li {
float: left;
}
.menu ul li:hover {
background: #4b545f;
}
.menu ul li:hover a {
color: #EBAD2D;
}
.menu li a.seleted ul li a{ background-color:#ff0000;}
.menu ul li a {
display: block;
padding: 11px 16px;
color: #bbb;
text-decoration: none;
}
.menu ul li a.selected { background-color:#ff0000;}
.menu ul ul {
background: #5f6975;
border-radius: 0px;
padding: 0;
position: absolute;
top: 100%;
width: 200px;
}
.menu ul ul li {
float: none;
border-top: 1px solid #6b727c;
border-bottom: 1px solid #575f6a;
position: relative;
}
.menu ul ul li a {
padding: 10px 16px;
color: #fff;
}
.menu ul ul li a:hover {
background: #4b545f;
}
.menu ul ul ul {
position: absolute;
left: 100%;
top: 0;
}
我当前的HTML菜单看起来像这样。
<div class="menu">
<ul>
<li><a href="#" title="Menu Item 1">Home</a>
<ul>
<li><a href="#" title="Sub-Menu Item 1">Home link 1</a>
<ul>
<li><a href="#" title="Sub-Sub-Menu Item 1">Home Link 1 Link 1</a></li>
<li><a href="#" title="Sub-Sub-Menu Item 2">Home Link 1 Link 2</a></li>
<li><a href="#" title="Sub-Sub-Menu Item 3">Home Link 1 Link 3</a></li>
</ul>
</li>
<li><a href="#" title="Sub-Menu Item 2">About</a>
<ul>
<li><a href="#" title="Sub-Sub-Menu Item 1">About 1</a></li>
<li><a href="#" title="Sub-Sub-Menu Item 2">About 2</a></li>
<li><a href="#" title="Sub-Sub-Menu Item 3">About 3</a></li>
</ul>
</li>
<li><a href="#" title="Sub-Menu Item 3">Contact</a>
<ul>
<li><a href="#" title="Sub-Sub-Menu Item 1">Contact 1</a></li>
<li><a href="#" title="Sub-Sub-Menu Item 2">Contact 2</a></li>
<li><a class="selected" href="#" title="Sub-Sub-Menu Item 3">Contact 3</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
如果您查看最后一个li a
Contact 3
,我将一个类附加到selected
,我的CMS会将此类添加到所选元素中。所以我想做的是用css或Jquery更改父<a>Contact</a>
和<a>Home</a>
的背景颜色,我希望这也兼容crossbrowser。谢谢大家伙。
这是一个小提琴:http://jsfiddle.net/8s3Bc/
答案 0 :(得分:4)
您只需要使用选定的类选择锚点,然后迭代它的 li parents以更改其背景。
在以下声明中,我为父 li 元素添加了父类。
$('.menu li a.selected').parents('li').addClass('parent');
我为父类定义了背景颜色。
.parent {
background-color:#ff0000;
}
以下是工作示例:http://jsfiddle.net/dhMSN/
答案 1 :(得分:0)
添加了这个jquery
$('.menu ul ul > li').click(function(){
$(this,'a').addClass('selected');
});
并改变了一些css,它在小提琴上
答案 2 :(得分:0)
可能是@halilb的回答是你想要的,但是看看这个,可能会提高你的表现并看起来感觉你的菜单。
演示:http://www.dynamicdrive.com/dynamicindex1/ddsmoothmenu.htm
代码:https://github.com/dynamicdriverepo/ddsmoothmenu
从中获取想法在这里,您可以找到所需的正确实现的jQuery和css。
创建新功能很好,但是当它免费且最重要的部分可用时效果不佳正确测试,具有更多功能和结构化代码
注意:我不是每次都会为您提供盗窃代码,也不会复制某些代码,但可以节省开发时间。