动画
htmx 旨在让你使用仅使用 CSS 和 HTML 即可为你的网页添加流畅的动画和过渡。以下是各种动画技术的几个示例。
htmx 还允许你使用新的 视图转换 API 来创建动画。
使用视图转换 API
htmx 通过 transitionhx-swap 属性选项提供对新的 View Transitions API 的访问。
下面是使用视图转换的交换示例。转换通过 CSS 中的 view-transition-name 属性与外部 div 绑定,并且该转换根据 ::view-transition-old 和::view-transition-new 定义,用于 @keyframes 定义动画。(有关视图转换 API 的详细信息,请参阅 Chrome 开发者页面。)
此过渡的旧内容应向左滑出,新内容应从右侧滑入。
请注意,截至撰写本文时,视觉转换仅发生在 Chrome 111+ 上,但预计在不久的将来会有更多浏览器实现此功能。
<style>
@keyframes fade-in {
from { opacity: 0; }
}
@keyframes fade-out {
to { opacity: 0; }
}
@keyframes slide-from-right {
from { transform: translateX(90px); }
}
@keyframes slide-to-left {
to { transform: translateX(-90px); }
}
.slide-it {
view-transition-name: slide-it;
}
::view-transition-old(slide-it) {
animation: 180ms cubic-bezier(0.4, 0, 1, 1) both fade-out,
600ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-left;
}
::view-transition-new(slide-it) {
animation: 420ms cubic-bezier(0, 0, 0.2, 1) 90ms both fade-in,
600ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-right;
}
</style>
<div class="slide-it">
<h1>Initial Content</h1>
<button class="btn primary" hx-get="/new-content" hx-swap="innerHTML transition:true" hx-target="closest div">
Swap It!
</button>
</div>