2016-08-23 81 views
1

我在我的资产净值有这个列表项,它有一个下拉菜单悬停在两个元素设置的效果将一个元素

<li class="projects"> 
     <a href="#">Projects</a> 
     <i class="fa fa-angle-down" aria-hidden="true"></i> 
     <ul class="list-unstyled myDropDown"> 
      <li><a href="#">King SALEH Bridge</a></li> 
      <li><a href="#">Internationl future schools</a></li> 
      <li><a href="#">Elwakeel Companies Group</a></li> 
     </ul> 
</li> 

,这里是样式

nav .myDropDown{ 
    display:none; 
    position:absolute; 
    min-height:160px; 
    background-color:#ffb700; 
    top:calc(15px + 100%) 
} 

,我想展示.myDropDown当悬停在li.projects上时,它仍然显示在悬停在.myDropDown本身上时,并且当鼠标不在li.projects或.myDropDown中时它会消失。

我有这个jQuery代码,但它不工作?!

$("nav .projects").hover(function(){ 
    $("nav .myDropDown").css("display","block"); 
}); 
$("nav .myDropDown").hover(function(){ 
      $(this).css("display","block"); 
    },function(){ 
      $(this).css("display","none"); 
}); 
+0

为什么你只是不使用纯CSS的呢? – pumpkinzzz

+0

你的资产净值不包含在OP – guradio

+0

我试图这样做,但它不工作..导航UL li.projects在:hover {.myDropDown显示 :阻止 } 导航.myDropDown:悬停{ 显示:块 } – Abdallah

回答

2

你应该使用提供的CSS的答案。但是,如果你想使用JavaScript,你应该做这样的:

$("nav .projects").hover(function(){ 
    $(this).find(".myDropDown").css("display","block"); 
}, function(){ 
    $(this).find(".myDropDown").css("display","none"); 
}); 

你不能保持top:calc(15px + 100%)如果你想让它重叠。如果您在下拉菜单和链接之间保持一段距离,那么您在输入它之前将其移除。这与CSS解决方案一样。

https://jsfiddle.net/80tbzcjh/1/

+0

感谢兄弟我欣赏你的答案,这是非常有用的,它工作正常https://jsfiddle.net/80tbzcjh/2/ – Abdallah

1

用这种方式

li:hover .myDropDown{dispaly:block;} 
+0

它不起作用兄弟,因为ul.myDropDown具有绝对位置,当悬停在li.projects时,显示下拉菜单,但当悬停在ul.myDropDown本身上它会消失,因为你将鼠标放在li.projects – Abdallah

2

为什么不仅CSS?

ul.myDropDown{ 
 
    display: none; 
 
} 
 

 
li.projects:hover > ul.myDropDown{ 
 
    display: block; 
 
}
<li class="projects"> 
 
     <a href="#">Projects</a> 
 
     <i class="fa fa-angle-down" aria-hidden="true"></i> 
 
     <ul class="list-unstyled myDropDown"> 
 
      <li><a href="#">King SALEH Bridge</a></li> 
 
      <li><a href="#">Internationl future schools</a></li> 
 
      <li><a href="#">Elwakeel Companies Group</a></li> 
 
     </ul> 
 
</li>

编辑:我改变了你的顶值和它的作品:

li.projects { 
 
position: relative; 
 
} 
 

 
ul.myDropDown{ 
 
    display:none; 
 
    position:absolute; 
 
    min-height:160px; 
 
    background-color:#ffb700; 
 
    top: 0px; 
 
} 
 

 
li.projects:hover > ul.myDropDown{ 
 
    display: block; 
 
}
<li class="projects"> 
 
     <a href="#">Projects</a> 
 
     <i class="fa fa-angle-down" aria-hidden="true"></i> 
 
     <ul class="list-unstyled myDropDown"> 
 
      <li><a href="#">King SALEH Bridge</a></li> 
 
      <li><a href="#">Internationl future schools</a></li> 
 
      <li><a href="#">Elwakeel Companies Group</a></li> 
 
     </ul> 
 
</li>

+0

上,它不起作用,因为ul.myDropDown具有绝对位置,当悬停在li.projects上时,显示下拉菜单,但是当悬停在ul .myDropDown本身因为你离开而消失d鼠标上li.projects – Abdallah

+0

现在有顶部:0?问题在于你将它完全移动到页面的底部,两个元素之间的差距被视为“不能悬停”,因此它会消失。 –

+0

是的,问题是在顶级属性,现在工作正常,谢谢很多兄弟 – Abdallah

相关问题