Javascript 从悬停操作中排除元素

Javascript 从悬停操作中排除元素,javascript,html,css,css-selectors,Javascript,Html,Css,Css Selectors,我在导航栏中有一个列表,所有项目(包括“主页”和“为什么”)都会在css中进行悬停操作: #主导航a, #主导航。导航a:激活, #主导航。导航a:悬停{ 不透明度:0.5; -webkit过渡:不透明度0.2秒,降低; 过渡:不透明度为0.2s; } #主导航激活>a, #主导航。导航a:悬停{ 不透明度:1; } 您可以使用:not选择器 #站点导航。导航a, #站点导航。导航a:激活, #站点导航。导航a:悬停{ 不透明度:0.2; } #站点导航激活>a, #站点导航

我在导航栏中有一个列表,所有项目(包括“主页”和“为什么”)都会在css中进行悬停操作:

#主导航a,
#主导航。导航a:激活,
#主导航。导航a:悬停{
不透明度:0.5;
-webkit过渡:不透明度0.2秒,降低;
过渡:不透明度为0.2s;
}
#主导航激活>a,
#主导航。导航a:悬停{
不透明度:1;
}

您可以使用:not选择器

#站点导航。导航a,
#站点导航。导航a:激活,
#站点导航。导航a:悬停{
不透明度:0.2;
}
#站点导航激活>a,
#站点导航。导航a:悬停:非(.normal){
不透明度:1;
}


一种方法是将
not()
第n个子项
(在
li
上,不适用于
a
):

注释后编辑:如果您不想应用初始状态,并且悬停状态已经是您一直想要的第二个子项的状态,则应该是这种方式(这种方式也
hover
不会应用于第二个链接):

再编辑一次以使其更符合实际情况(
:active
:hover
仅适用于第二条规则,在第一条规则上没有意义):


当您声明不透明度时:1

  • li a:悬停
同时,您可以为

  • li a[href=“#关于”]
工作示例:

li a{
不透明度:0.5;
过渡:不透明度为0.2s;
}
li a:悬停,li a[href=“#关于”]{
不透明度:1;
}

您想排除哪些?第一个,最后一个,随机?第二个。我只想让它一直保持1透明度。在问题的HTML中,没有任何元素将
class
设置为
“active”
。我尝试将class=“xx”添加到其中一个a ref项,然后将:not(.xx)添加到悬停动作中,但由于某些原因,它无法工作。
#main-nav .nav a:hover:not(.someclass){
   opacity:0.5;
}
#main-nav .nav li:not(:nth-child(2)) a {
  opacity:0.5;
  -webkit-transition:opacity 0.2s ease-out;
  transition:opacity 0.2s ease-out; 
  }

#main-nav .nav li:not(:nth-child(2)) a:active,
#main-nav .nav li:not(:nth-child(2)) a:hover{
  opacity:1;
  }