繁体   English   中英

在显示和隐藏 div 上应用 css 过渡

[英]Apply css transition on showing and hiding div

在下面的代码中,我在单击按钮时切换 div (id=popdiv) 的可见性。 我想给它添加一些过渡效果。 例如,现在它只是弹出并隐藏。 我希望在显示隐藏时过渡有点慢,但没有任何过渡或动画效果起作用。

 $('#pop').click(function(){ $('#popdiv').toggle(); })
 #popdiv{ display: none; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div style="background-color: aqua; width: 50%; height: 20%;" > <button id="pop">CLICK</button> </div> <div style="background-color: cadetblue; width: 30%; height: 40%;" id="popdiv"> POPUP </div>

如何实现这一目标?

提前致谢 !

可以使用-jquery的slideToggle()来实现,如下所示-

$("#pop").click(function(){ $("#popdiv").slideToggle(1000);

});

不要使用toggle()函数。 它只会让您控制它应该显示和隐藏的时间,而不是如何显示和隐藏。

而是使用 JavaScript 和 CSS 的组合。 display属性不能被动画化,因此如果要创建过渡,则不应使用该属性。

而是使用 CSS 中的opacityvisibilitytransition属性的组合。 作为默认状态,不透明度应为0 ,可见性应hidden ,并且元素应在这两个元素上设置过渡。

现在定义一个 CSS 类,它的 opacity 设置为1 ,并且可见性属性设置为visible 这将是您的元素可见的状态。

然后使用 JavaScript,在您的情况下使用 jQuery,在您想要显示或隐藏的元素上切换类。 这可以通过toggleClass()方法完成。

 $('#pop').click(function(){ $('#popdiv').toggleClass('show'); })
 #popdiv { opacity: 0; visibility: hidden; transition: 500ms ease-in-out; transition-property: opacity, visibility; } #popdiv.show { opacity: 1; visibility: visible; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div style="background-color: aqua; width: 50%; height: 20%;" > <button id="pop">CLICK</button> </div> <div style="background-color: cadetblue; width: 30%; height: 40%;" id="popdiv"> POPUP </div>

您可以使用.animate添加动画

这是我所指的文档: https : //www.w3schools.com/jquery/jquery_animate.asp

对于您的代码,我删除了外部 CSS,更新了您的 jQuery,并向您的弹出式 div 添加了display: none

 $('#pop').click(function(){ $('#popdiv').animate({ width: 'toggle' }); })
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div style="background-color: aqua; width: 50%; height: 20%;" > <button id="pop">CLICK</button> </div> <div style="background-color: cadetblue; width: 30%; height: 40%; display: none;" id="popdiv"> POPUP </div>

其他选项:您可以更改淡入数字和 0.5 秒的过渡。

 $('#pop').click(function(){ $('#popdiv').fadeIn(1000); }) $('#pop2').click(function(){ $('#popdiv2').toggleClass('showHide'); })
 #popdiv{ display:none; } #popdiv2 { opacity: 0; transition: all .5s ease-in-out; } #popdiv2.showHide { opacity: 1; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div style="background-color: aqua; width: 50%; height: 20%;" > <button id="pop">CLICK</button> </div> <div style="background-color: cadetblue; width: 30%; height: 40%;" id="popdiv"> POPUP </div> <br><br><br> <div style="background-color: aqua; width: 50%; height: 20%;" > <button id="pop2">CLICK TWO</button> </div> <div style="background-color: cadetblue; width: 30%; height: 40%;" id="popdiv2"> POPUP TWO </div>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM