概述
效果图:
想法:
jquery的展开折叠动画效果很好看,想自己实现一个,结果发现仅仅只靠css添加类和动画是不行,最开始的思路是折叠时候设置高度为0,展开时设置高度设置为auto,让他自己撑开,可是transition并不过渡高度height为auto的动画,所以也就没有生效。
实现方法:
transition过渡高度height的时候,必须设置固定px,100%也不会生效,所以我们必须知道这块内容完全撑开的时候所占据的高度是多少。
最后发现,在原生dom节点上,scrollHeight属性就是这个节点在不使用滚动条的情况下为了适应视口中所用内容所需的最小高度。
最终代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
/* *{
margin:0;
padding:0;
} */
/*隐藏滚动条,不然获取高度就不一致*/
.box::-webkit-scrollbar {
display: none;
}
.box::-webkit-scrollbar {
width: 0;
background: 0 0;
}
.box{
width:400px;
height:0;
background:#eee;
overflow: hidden;
}
.collapse-transition {
transition: 0.3s height ease-in-out, 0.3s padding-top ease-in-out, 0.3s padding-bottom ease-in-out;
}
</style>
</head>
<body>
<button class="toggleBtn">切换</button>
<div class="box collapse-transition">
我们建议使用 CDN 引入 Element 的用户在链接地址上锁定版本,以免将来 Element 升级时受到非兼容性更新的影响。锁定版本的方法请查看。
我们建议使用 CDN 引入 Element 的用户在链接地址上锁定版本,以免将来 Element 升级时受到非兼容性更新的影响。锁定版本的方法请查看。
我们建议使用 CDN 引入 Element 的用户在链接地址上锁定版本,以免将来 Element 升级时受到非兼容性更新的影响。锁定版本的方法请查看。
我们建议使用 CDN 引入 Element 的用户在链接地址上锁定版本,以免将来 Element 升级时受到非兼容性更新的影响。锁定版本的方法请查看。
</div>
</body>
</html>
<script src="./jquery.3.2.1.min.js"></script>
<script>
$('.toggleBtn').on('click',function(){
var that=$(this);
var box=$('.box');
let scrollHeight=box[0].scrollHeight;//不使用滚动条的情况下为了适应视口中所用内容所需的最小高度
if(box.css('height')=='0px'){
box.css({
'height':scrollHeight+'px',
'overflow': 'auto'
});
}else{
box.css({
'height':'0',
'overflow': 'hidden'
});
}
box.addClass('collapse-transition');
});
</script>
最后
以上就是花痴鸵鸟为你收集整理的js 展开折叠动画原理,jquery的toggle切换效果的全部内容,希望文章能够帮你解决js 展开折叠动画原理,jquery的toggle切换效果所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复