html - 在包含许多元素的列表菜单中突出显示单个元素

标签 html css list

我有一个导航菜单,我正在尝试做两件事。当我将鼠标悬停在 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');
}

这是一个包含大部分代码的 JSFiddle http://jsfiddle.net/aHSmy/1/

最佳答案

在你的css中定义一个active类,然后使用Jquery来应用和移除它

$(function() {
   $("li").click(function() {
      // remove classes from all
      $("li").removeClass("active");
      // add class to the one we clicked
      $(this).addClass("active");
   });
});

Codepen Example

关于html - 在包含许多元素的列表菜单中突出显示单个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19482386/

相关文章:

Android - 动态单选按钮问题

python - 如何将两个不同长度的列表写入csv文件中的列和行

html - 需要帮助对齐另一个 div 内的 div。需要他们在右边

javascript - 如何将我的 Onclick 和 Onmouseover 从我的 HTML 移动到我的 javascript?

c# - 在列表集合中查找重复项

javascript - Google Prettify 线条颜色超出可见区域(可预滚动)

javascript - 表格中多个 <td> 中的文本水平居中

javascript - 根据鼠标移动改变背景颜色

javascript - Select2 on change 事件在 Vuejs 中不起作用

javascript - 如何在移动 View 中隐藏一些导航链接?