使用 TailwindCSS 任意值的过渡最大高度
Transition max-height with TailwindCSS arbitrary values
我正在尝试使用 Tailwind 的任意值功能将 div 的最大高度设置为从 0% 到 100% 的动画,但它不起作用:
document.getElementById("toggle").addEventListener("click", () => {
document.getElementById("txt").classList.toggle("max-h-full");
document.getElementById("txt").classList.toggle("max-h-0");
});
<script src="https://cdn.tailwindcss.com"></script>
<button id="toggle" class="m-3 p-2 border hover:bg-slate-300">Toggle text</button>
<p id="txt" class="m-3 border overflow-hidden max-h-full transition-[max-height] ease-out">
This is a text.<br>That can be collapsed.<br>Or expanded.<br>And so forth.<br>Et cetera.
</p>
它只是瞬间折叠和展开,没有任何 max-height
的过渡。
奇怪的是,我确实看到在开发人员工具中设置了正确的属性:
transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
transition-property: max-height;
transition-duration: 150ms;
当然还有 max-height
.
我还需要设置或配置什么才能使其转换?
这可能是一个 CSS 问题,而不是 TailwindCSS 问题。
CSS 想要快点,所以有几个值你不能设置动画。当父级没有明确的尺寸时,这些不可动画的值之一是 100%
.
除非您愿意设置明确的高度(例如 100px
)或使用一些 JavaScript,否则据我所知无法制作此动画。
因为看起来你正在尝试制作手风琴,我建议你查看这篇文章,它使用 WebAnimationsApi 来实现你想要的相同效果:https://css-tricks.com/how-to-animate-the-details-element-using-waapi/
查看更多:
我正在尝试使用 Tailwind 的任意值功能将 div 的最大高度设置为从 0% 到 100% 的动画,但它不起作用:
document.getElementById("toggle").addEventListener("click", () => {
document.getElementById("txt").classList.toggle("max-h-full");
document.getElementById("txt").classList.toggle("max-h-0");
});
<script src="https://cdn.tailwindcss.com"></script>
<button id="toggle" class="m-3 p-2 border hover:bg-slate-300">Toggle text</button>
<p id="txt" class="m-3 border overflow-hidden max-h-full transition-[max-height] ease-out">
This is a text.<br>That can be collapsed.<br>Or expanded.<br>And so forth.<br>Et cetera.
</p>
它只是瞬间折叠和展开,没有任何 max-height
的过渡。
奇怪的是,我确实看到在开发人员工具中设置了正确的属性:
transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
transition-property: max-height;
transition-duration: 150ms;
当然还有 max-height
.
我还需要设置或配置什么才能使其转换?
这可能是一个 CSS 问题,而不是 TailwindCSS 问题。
CSS 想要快点,所以有几个值你不能设置动画。当父级没有明确的尺寸时,这些不可动画的值之一是 100%
.
除非您愿意设置明确的高度(例如 100px
)或使用一些 JavaScript,否则据我所知无法制作此动画。
因为看起来你正在尝试制作手风琴,我建议你查看这篇文章,它使用 WebAnimationsApi 来实现你想要的相同效果:https://css-tricks.com/how-to-animate-the-details-element-using-waapi/
查看更多: