Tailwind垂直步骤器动画问题:内容高度适配与动画保留
解决方案:用max-height模拟自适应高度的过渡动画
问题核心在于CSS过渡的机制:过渡动画需要明确的数值起点和终点,h-fit是浏览器动态计算的高度值,无法被过渡动画识别,所以替换成h-fit后动画直接失效。
解决思路是用max-height模拟自适应高度的展开/收起动画:
- 初始状态设为
max-h-0,配合overflow-y-hidden隐藏内容 - 激活时设置一个足够容纳所有步骤内容的max-height值(比如
max-h-[1000px],可根据实际内容调整) - 保留
transition-all类,让max-height的变化产生平滑动画
修改后的代码段:
<div className={`overflow-y-hidden max-h-0 mt-5 transition-all ease-in-out duration-1000 flex flex-col border border-white ${ stepIdx === currentStep ? "max-h-[1000px]" : "" }`} > <div className={`${ isCurrent(stepIdx) ? "text-white" : "text-gray-500" } mb-5`} > {step.description} </div> </div> {isCurrent(stepIdx) ? ( <Buttons handleNext={handleNext} handleBack={handleBack} /> ) : ( "" )} </div>
补充说明:
- 这个方法的关键是给
max-height设置远大于实际内容高度的值,展开时内容会自然适配自身高度,同时过渡动画正常生效 - 如果后续步骤内容高度有变化,只需调整
max-h-[xxx]的数值,确保能覆盖最大内容高度即可
内容的提问来源于stack exchange,提问作者zilla
相关产品推荐
相关产品推荐

