简体   繁体   English

使用 jQuery 轻松转换切换 Div

[英]Ease Transition of Toggling Div with jQuery

I'm trying to establish a smooth transition when toggling a div.我试图在切换 div 时建立平滑过渡。 Right now the toggle is immediate.现在切换是即时的。

 $(document).ready(function(){ $(".product-suggestion-form-container").click(function(){ $(".form-div-top").toggle(); }) });
 .description-container { font-family: "Proxima Nova Regular"; }.form-div-outer { margin: 10px 0; }.product-suggestion-form-container { border: 1px solid #c6c6c6; border-bottom: none; padding: 5px 10px; display: flex; justify-content: space-between; background-color: #f8f7f7; cursor: pointer; } /*initial display*/.form-div-top { display: none; background-color: #f8f7f7; border: 1px solid #c6c6c6; }
 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div class="description-container"> Fill out the product suggestion and contact us forms below: </div> <div class="form-div-outer"> <div class="product-suggestion-form-container"> <span class="form-title">Product Suggestion Form</span> <span class="dropdown-arrow"><i class="fas fa-caret-down"></i> </span> </div> <div class="form-div-top"> <form class="form-div-inner-top"> <span class="input-group input-group-name"> <input type="text" placeholder="Name" class="form-input" required> </input> </span> <span class="input-group input-group-email-address"> <input type="text" placeholder="Email Address" class="form-input" required></input> </span> <span class="input-group description-of-product-desired"> <input type="textarea" placeholder="Description of product desired" class="form-input" required></input> </span> </form> </div> </div>

I've tried to add .animate() and .fadeIn() but neither are working.我尝试添加.animate().fadeIn()但两者都不起作用。 Is my syntax wrong?我的语法错了吗? Is the way I'm calling them wrong?我称呼他们的方式是错误的吗? Transition is still immediate.过渡仍然是即时的。

$(document).ready(function(){
   $(".product-suggestion-form-container").click(function(){
      $(".form-div-top").toggle()
      $(".form-div-top").animate({
       duration: 200
      });
      $(".form-div-top").fadeIn( "slow", function() {
       // Animation complete
      });
   })
});

jQuery's toggle method accepts a duration in milliseconds as the first argument. jQuery 的toggle方法接受以毫秒为单位的持续时间作为第一个参数。

$(".form-div-top").toggle(300);

 $(document).ready(function(){ $(".product-suggestion-form-container").click(function(){ $(".form-div-top").toggle(300); }) });
 .description-container { font-family: "Proxima Nova Regular"; }.form-div-outer { margin: 10px 0; }.product-suggestion-form-container { border: 1px solid #c6c6c6; border-bottom: none; padding: 5px 10px; display: flex; justify-content: space-between; background-color: #f8f7f7; cursor: pointer; } /*initial display*/.form-div-top { display: none; background-color: #f8f7f7; border: 1px solid #c6c6c6; }
 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div class="description-container"> Fill out the product suggestion and contact us forms below: </div> <div class="form-div-outer"> <div class="product-suggestion-form-container"> <span class="form-title">Product Suggestion Form</span> <span class="dropdown-arrow"><i class="fas fa-caret-down"></i> </span> </div> <div class="form-div-top"> <form class="form-div-inner-top"> <span class="input-group input-group-name"> <input type="text" placeholder="Name" class="form-input" required> </input> </span> <span class="input-group input-group-email-address"> <input type="text" placeholder="Email Address" class="form-input" required></input> </span> <span class="input-group description-of-product-desired"> <input type="textarea" placeholder="Description of product desired" class="form-input" required></input> </span> </form> </div> </div>

On my own I can suggest a solution using the toggleClass() method:我自己可以建议使用toggleClass()方法的解决方案:

...
$(".form-div-top").toggleClass("form-div-top_show");
...

It is necessary to create an additional class for the block activity:需要为块活动创建一个额外的 class:

.form-div-top_show {
  opacity: 1;
}

And also, you need to add a transition rule for the smooth appearance of the block, and replace display: none with opacity: 0 :此外,您需要为块的平滑外观添加transition规则,并将display: none替换为opacity: 0

.form-div-top {
  opacity: 0;
  background-color: #f8f7f7;
  border: 1px solid #c6c6c6;
  transition: .5s;
}

 $(document).ready(function(){ $(".product-suggestion-form-container").click(function(){ $(".form-div-top").toggleClass("form-div-top_show"); }) });
 .description-container { font-family: "Proxima Nova Regular"; }.form-div-outer { margin: 10px 0; }.product-suggestion-form-container { border: 1px solid #c6c6c6; border-bottom: none; padding: 5px 10px; display: flex; justify-content: space-between; background-color: #f8f7f7; cursor: pointer; } /*initial display*/.form-div-top { opacity: 0; background-color: #f8f7f7; border: 1px solid #c6c6c6; transition: .5s; }.form-div-top_show { opacity: 1; }
 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div class="description-container"> Fill out the product suggestion and contact us forms below: </div> <div class="form-div-outer"> <div class="product-suggestion-form-container"> <span class="form-title">Product Suggestion Form</span> <span class="dropdown-arrow"><i class="fas fa-caret-down"></i> </span> </div> <div class="form-div-top"> <form class="form-div-inner-top"> <span class="input-group input-group-name"> <input type="text" placeholder="Name" class="form-input" required> </input> </span> <span class="input-group input-group-email-address"> <input type="text" placeholder="Email Address" class="form-input" required></input> </span> <span class="input-group description-of-product-desired"> <input type="textarea" placeholder="Description of product desired" class="form-input" required></input> </span> </form> </div> </div>

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

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