You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何取消jQuery中hide/show的盒子动画?实现黑色div平滑消失

解决jQuery hide/show的盒子形变问题,实现仅淡入淡出效果

嘿,我懂你的需求啦——你希望这个全屏黑色div在隐藏和显示时,只做缓慢的淡入淡出,而不是默认的那种收缩形变动画对吧?

问题出在jQuery的hide("slow")和show("slow")默认行为上:它们会同时修改元素的宽度、高度和透明度,所以你会看到盒子慢慢缩小消失的形变效果。要只保留淡入淡出,我们可以用专门的淡入淡出方法,或者手动控制透明度动画。

方法1:使用fadeOut()和fadeIn()(最直接)

这两个方法是jQuery专门为淡入淡出效果设计的,只会修改元素的透明度,不会改变宽高,完美符合你的需求:

修改后的完整代码:

HTML

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="hide">Hide</button>
<button id="visible">Visible</button>
<div id="view"></div>

CSS

#view{ 
  height: 100%; 
  width: 100%; 
  position: fixed; 
  background-color: black; 
}

JavaScript

$("#hide").click(function(){ 
  $("#view").fadeOut("slow"); 
}); 

$("#visible").click(function(){ 
  $("#view").fadeIn("slow"); 
});

方法2:手动控制透明度动画(更灵活)

如果你想更精细地控制动画过程,也可以用animate()方法直接修改opacity属性,动画结束后再设置display属性:

$("#hide").click(function(){ 
  $("#view").animate({opacity: 0}, "slow", function(){
    $(this).css("display", "none");
  }); 
}); 

$("#visible").click(function(){ 
  $("#view").css({opacity: 0, display: "block"}).animate({opacity: 1}, "slow"); 
});

这个方法的好处是,你可以自定义动画时长、添加回调函数做后续操作,而且完全不会有盒子形变的问题。

内容的提问来源于stack exchange,提问作者user9269971

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:20:38