hx-indicator
hx-indicator 属性允许你指定在请求期间要添加 htmx-request 类的元素。这可用于在请求进行时显示进度条。
此属性的值是要应用类的一个或多个元素的 CSS 查询选择器,或关键字 closest,后跟一个 CSS 选择器,它将找到与给定 CSS 选择器匹配的最近的父元素或自身(例如,closest tr);
下面是一个在按钮旁边带有旋转器的示例:
<div>
<button hx-post="/example" hx-indicator="#spinner">
Post It!
</button>
<img id="spinner" class="htmx-indicator" src="/img/bars.svg"/>
</div>
当请求正在进行时,这将导致 htmx-request 类被添加到 #spinner 图像中。图像 htmx-indicator 上也有类,它定义了一个不透明度转换,将显示旋转器:
.htmx-indicator{
opacity:0;
transition: opacity 500ms ease-in;
}
.htmx-request .htmx-indicator{
opacity:1;
}
.htmx-request.htmx-indicator{
opacity:1;
}
如果你希望使用不同的效果来显示旋转器,你可以定义并使用自己的指示器 CSS。以下是使用 display 而不是不透明度的示例(请注意,我们使用 my-indicator 而不是htmx-indicator):
.my-indicator{
display:none;
}
.htmx-request .my-indicator{
display:inline;
}
.htmx-request.my-indicator{
display:inline;
}
请注意,选择器的目标 hx-indicator 不必是你想要显示的确切元素:它可以是指示器父层次结构中的任何元素。
最后,请注意,默认情况下,htmx-request 类会添加到导致请求的元素中,因此你可以在该元素内放置一个指示符,而不需要使用属性明确调用它 hx-indicator:
<button hx-post="/example">
Post It!
<img class="htmx-indicator" src="/img/bars.svg"/>
</button>
笔记
- hx-indicator 可以继承并放置在父元素上
- 如果没有明确的指示,则该类 htmx-request 将被添加到触发请求的元素中
- 如果你想使用自己的 CSS 但仍将其用作 htmx-indicator 类名,则需要禁用 includeIndicatorStyles。请参阅 配置 htmx 。最简单的方法是将其添加到 <head> HTML 中:
<meta name="htmx-config" content='{"includeIndicatorStyles": false}'>