javascript - 使用 animate、addClass 和 RemoveClass 更改 div 大小

标签 javascript jquery jquery-animate

这是我的第一个问题,如果我不够具体或者我做错了什么,请随时告诉我! 我想要一个jquery方法,它将所有具有“passive”类的div更改为高度500px和passive-->active,所以会有另一种方法将高度更改回100px。前半部分工作正常,我改变了类(class),但第二个动画不会发生。我在 html 中所拥有的只是一个带有被动类的 div。

$("document").ready(function(){

$(function() { 

$(".passive").click(function(){
$(this).animate({height:'500px'});
$(this).addClass("active");
$(this).removeClass("passive");    
});    


$(".active").click(function(){
$(this).animate({height:'100px'});
$(this).addClass("passive");
$(this).removeClass("active");
});   

});
});` 

最佳答案

jQuery.animate() 成本高昂且不稳定。只需切换类并使用 CSS 进行过渡即可获得更平滑的过渡

.passive {  
  height:100px; 
  transition:height 1s;
}
.active { 
  height:300px;
}

Array
  .from(document.querySelectorAll('.passive'))
  .forEach(
    e => e.addEventListener(
           'click', 
           evnt => e.classList.toggle('active')  
    )
)
.container { display:flex; }
.container>div { 
  flex:1 auto;
}

.passive { 
  background-color:red; 
  margin:5px; 
  height:100px; 
  width:20px; 
  transition:height 1s;
}
.active { 
  height:300px;
}
<div class="container">
  <div class="passive" tabindex=1></div>
  <div class="passive" tabindex=2></div>
  <div class="passive" tabindex=3></div>
</div>

关于javascript - 使用 animate、addClass 和 RemoveClass 更改 div 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36462239/

相关文章:

javascript - AngularJS : Factory $http assigning values returning null

javascript - 按钮 onclick 事件在第一次单击时未触发

jQuery:如何通过将高度添加到元素顶部来制作更高的动画?

javascript - 使用 jQuery/Ajax 通过下拉菜单过滤 PHP SELECT 查询

javascript - 无延迟的 HTML 动画

jQuery 动画序列

javascript - 如何正确地顺时针旋转图像(从原点转换)CSS/Javascript

javascript - 如何在 jQuery 上重复或循环这个队列?

javascript - 使用 jQuery 对话框时防止关注输入

jquery - 删除了宽度样式,仍然没有改变。查询?