HTMX - 动画

动画使您的网站对用户更具吸引力,并帮助您以更好的形式展示您的产品或服务。HTMX​​ 旨在允许开发人员使用 CSS Transitions。CSS Transitions 用于处理 CSS 中的动画速度。这允许您在指定的持续时间内为元素的样式属性的变化设置动画。

您可以使用 View Transitions API 创建动画。View Transitions API 能够在网站视图之间创建动画过渡。对于单个页面,它包括 DOM 状态之间的动画,对于多页应用程序,它包括文档之间的动画导航。

HTMX 中的动画列表

基本 CSS 动画

简单的动画(如颜色变化或进度条)可视为基本 CSS动画,这里我们将看到动画中元素颜色变化的一个例子。

CSS 代码
.animation {
 transition: all 1s ease-in;
}
HTML 代码
<div id="color-change" class="animation" style="color:red" 
 hx-get="/colors" hx-swap="outerHTML" hx-trigger="every 1s">
 TutorialsPoint
</div>
<div id="color-change" class="animation" style="color:blue" 
 hx-get="/colors" hx-swap="outerHTML" hx-trigger="every 1s">
 TutorialsPoint
</div>

交换过渡

交换过渡动画可淡入淡出任何元素。让我们创建一个淡出交换动画。因此,在此动画中,如果您想淡出将在请求结束时被删除的元素,则必须使用带有 CSS 的 htmx-swapping 类并扩展交换阶段。

CSS 代码
.fade-out.htmx-swapping {
 opacity: 0;
 transition: opacity 1s ease-out;
}
HTML Code
<button class="fade-out"
 hx-delete="/fade_out_demo"
 hx-swap="outerHTML swap:1s">
 TutorialsPoint
</button>

Settling Transitions

它允许在内容更新时实现平滑的视觉过渡。让我们创建一个简单的演示来展示此功能。

CSS 代码
#fade-in.htmx-added {
 opacity: 0;
}
#fade-in {
 opacity: 1;
 transition: opacity 1s ease-out;
}
HTML 代码
<button id="fade-in"
 class="btn primary"
 hx-post="/fade_in_demo"
 hx-swap="outerHTML settle:1s">
 TutorialsPoint
</button>

请求飞行动画

如果您在触发请求的元素上应用 htmx-request,则可以实现飞行动画。下面是我们将应用此类的表单元素,因此当您提交时,它将更改并显示您已提交。

CSS 代码
form.htmx-request {
 opacity: .5;
 transition: opacity 300ms linear;
}
<form hx-post="/name" hx-swap="outerHTML">
<label>Name:</label><input name="name"><br/>
<button class="btn primary">Submit</button>
</form>