我有一个导航菜单,我正在尝试做两件事。当我悬停1个列表项时,我试图让单个项目突出显示,如果我单击一个项目,我正在尝试使用某种颜色或样式来指示此项目当前处于焦点或活性。如果我选择另一个,则当前项目将停用,新选择的项目将变为活动状态。
这是我尝试的CSS,但是现在所有项目都会在我悬停任何列表项时突出显示,而不只是一个:
#listContainer{
margin-top:15px;
}
#expList ul, li {
list-style: none;
margin:0;
padding:0;
cursor: pointer;
}
#expList p {
margin:0;
display:block;
}
#expList p:hover {
background-color:#121212;
}
#expList li {
line-height:140%;
text-indent:0px;
background-position: 1px 555555px;
padding-left: 20px;
background-repeat: no-repeat;
margin-bottom: 5px;
}
#expList ul{
margin-top: 5px;
}
#expList li:hover{
background-color: #eee; This is where the problem is
}
/* Collapsed state for list element */
#expList .collapsed {
background-image: url('https://hosted.compulite.ca/kc/MD/SiteAssets/collapsed.png');
}
/* Expanded state for list element
/* NOTE: This class must be located UNDER the collapsed one */
#expList .expanded {
background-image: url('https://hosted.compulite.ca/kc/MD/SiteAssets/expanded.png');
}
这是一个包含大部分代码http://jsfiddle.net/aHSmy/1/
的JSFiddle答案 0 :(得分:1)
在css中定义一个活动类,然后使用Jquery应用并删除它
$(function() {
$("li").click(function() {
// remove classes from all
$("li").removeClass("active");
// add class to the one we clicked
$(this).addClass("active");
});
});
答案 1 :(得分:1)
您必须更准确地定位您的li项目。由于你的html结构是“ul - > li - > ul - > li with links”而你的css只针对包含所有链接的第一个li,所以它们当然都是在悬停时应用的样式。更正确的css定位是:
#expList ul li:hover{
background-color: #eee;
}
如果要定位活动/焦点状态,则必须使用:active
等css伪类选择器。 (在这里阅读更多相关信息:css-tricks.com/pseudo-class-selectors),或者如果您想在用户继续使用当前页面时长期使用它们,请使用jQuery脚本Paulie_d给您。