html不固定高度元素的展开、收起

本文探讨了在HTML中处理不固定高度元素展开和收起时遇到的动画效果问题。由于height不能设置为auto以实现平滑过渡,提出了两种解决方案:1) 使用max-height属性,但可能造成展开和收起速度不一致;2) 利用animate获取并设置元素高度,实现更精确的动画效果。通过示例代码展示了如何在点击事件中动态调整元素高度,确保展开和收起的动画流畅。
摘要由CSDN通过智能技术生成

记录自己遇到的问题。
关于html不固定高度元素的展开和收起。
因需要隐藏的内容是不固定长度,height是不能写死的,如果将height写为auto,那transtion则没有0到auto的动画效果。
解决方法:
1、使用max-height属性(不推荐):max-height数值设置尽量大于内容高度。缺点是展开和收起的动画速度不一致,展开速度快、收起速度慢
2、使用animate:在点击展开的时候,取元素在height:auto时的高度,再使用animate赋予动画效果

// 假设元素点击前的高度是200px,点击时展开所有内容(不固定高度)
$('#id').on('click',function(){
	var usedHegiht = $(this).height(); //点击时取此元素的高度。下面进行判断
	if (usedHeight == 200) { //判断此元素是否是我们一开始设置的200px高度仪
		autoHeight = $(this).css({height:'auto'}).height(); //先赋值auto 再取具体高度
		$(this).height(200).animate({height:autoHeight},300); //animate赋予元素200px到auto的动画
	}else {
		autoHeight = $(this).height(); //不是起始状态的高度,取此时height
		$(this).height(autoHeight ).animate({height:200},300); //animate赋予元素auto到200px的动画
	}
})
//上面是我手敲的列子,建议不要判断的时候写死。可以加个标记temp = false
// 点击展开后temp修改为true;点击收起后修改为false。这样就不用if 判断时的数值写死了,程序员哪有写死的,对吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值