请求指示器

当发出 AJAX 请求时,让用户知道正在发生的事情通常是件好事,因为浏览器不会给他们任何反馈。你可以在 htmx 中使用 htmx-indicator 类来完成此操作。

定义 htmx-indicator 类,以便默认情况下具有该类的任何元素的不透明度为 0,使其不可见但存在于 DOM 中。

当 htmx 发出请求时,它会将 htmx-request 类放在一个元素(请求元素或其他元素,如果指定)上。htmx-request 类将导致带有 htmx-indicator 类的子元素过渡到不透明度 1,显示指示器。

<button hx-get="/click">
    Click Me!
    <img class="htmx-indicator" src="/spinner.gif">
</button>

这里有一个按钮。单击该按钮时,htmx-request将添加类,从而显示旋转器 gif 元素。(最近我喜欢SVG 旋转器。)

虽然htmx-indicator该类使用不透明度来隐藏和显示进度指示器,但如果你更喜欢其他机制,你可以创建自己的 CSS 转换,如下所示:

这里我们有一个按钮。单击后,将向其添加 htmx-request 类,这将显示旋转 gif 元素。(我现在喜欢 SVG 旋转)。

虽然 htmx-indicator 类使用 opacity 来隐藏和显示进度指示器,但如果您更喜欢其他机制,您可以创建自己的 CSS 过渡,如下所示:

.htmx-indicator{
    display:none;
}
.htmx-request .htmx-indicator{
    display:inline;
}
.htmx-request.htmx-indicator{
    display:inline;
}

如果你想要将 htmx-request 添加到不同的元素,可以将 hx-indicator 属性与 CSS 选择器一起使用:

<div>
    <button hx-get="/click" hx-indicator="#indicator">
        Click Me!
    </button>
    <img id="indicator" class="htmx-indicator" src="/spinner.gif"/>
</div>

这里我们通过 id 显式调用指示器。请注意,我们也可以将类放在父 div 上,并产生相同的效果。

你还可以使用 hx-disabled-elt 属性在请求期间将 disabled 属性添加到元素。