取消fadeToggle的闪烁

Mic*_*chi 1 html css jquery

HTML:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="Button">Button
  <div class="FadeItem">
    <ul>                    
      <li>Main Menu A </li>
      <li class="Button">Main Menu B
        <div class="FadeItem">
          <ul>
            <li>Sub Menu B</li>
            <li>Sub Menu B</li>
          </ul>
        </div>  
      </li> 
    </ul>       
  </div>        
</div>  
Run Code Online (Sandbox Code Playgroud)

CSS:

.button{
  float: left;
}

.FadeItem{
  display: none;
}
Run Code Online (Sandbox Code Playgroud)

jQuery:

$(document).ready(function () {
  $(".Button").hover(function(){
    $(".FadeItem").fadeToggle(500);
  });
});
Run Code Online (Sandbox Code Playgroud)

如您所见,上面的简单代码在某些项目的内容中淡出。问题是当我将光标放在它闪烁的淡入内容上时,但我希望内容不闪烁地显示。

你知道我需要在我的代码中更改什么来取消闪烁吗?

https://jsfiddle.net/0tfuobpw/1/

Okt*_*OSE 5

更新:

为此,您不需要 js:D

.FadeItem{
  display:none;
  transition: all 0.5s ease;
}
.Button:hover>.FadeItem{
  display:block;
  transition: all 0.5s ease;
}
Run Code Online (Sandbox Code Playgroud)
<div class="Button">Button

	<div class="FadeItem">
	
		<ul>					
			<li>Main Menu A </li>
			<li class="Button">Main Menu B
		
				<div class="FadeItem">
					<ul>
						<li>Sub Menu B</li>
						<li>Sub Menu B</li>
					</ul>
				</div>	
				
			</li>	
			
		</ul>	
		
	</div>	
	
</div>	
Run Code Online (Sandbox Code Playgroud)

  • 我真的很喜欢你在这里寻求纯 CSS 解决方案,这通常是解决它的最佳方式。如果我可以添加一些建议?`display:none;` 上的过渡效果在 Firefox 中不起作用,因为从技术上讲,`display` 只有设置状态使得补间变得不可能。但是,您可以使用 `opacity` 来代替(然后使用 `pointer-events:none`,而 `opacity` 为 0),以确保不会触发不可见元素上的悬停。+1仍然是一个非常直观的答案:) (2认同)