hx-indicatorhx-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 を使用する例を次に示します (htmx-indicator の代わりに my-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 クラスはリクエストをトリガする要素に追加されます。htmx-indicator を引き続き使用したい場合は、includeIndicatorStyles を無効にする必要があります。htmx の設定 を参照してください。最も簡単な方法は、HTML の <head> にこれを追加することです。<meta name="htmx-config" content='{"includeIndicatorStyles": false}'>