htmx チートシート

htmx 2.0のすべてのhx-*属性、htmx:*イベント、HX-*ヘッダを例付きで検索できるリファレンス。

このツールについて

hx-valshx-vars どっちが正しい?」「クライアント側でイベントを発火させるレスポンスヘッダはどれだっけ?」——そんな迷いを解消するため、htmx 2.0のすべての属性・イベント・ヘッダを1つの検索可能なページにまとめました。各エントリにはコピー可能なHTMLスニペット、受け付ける値、バージョン情報を掲載しています。

htmxは、HTML属性だけでモダンでインタラクティブなWeb UIを構築できるライブラリです。リクエスト送信やDOM更新のためにJavaScriptを書く代わりに、hx-gethx-targethx-swapといった属性をマークアップに直接書き込みます。サーバーはHTMLフラグメントを返し、htmxがその場で差し替えるため、SPAの複雑さなしにSPAライクな体験が得られます。

エントリは8つのカテゴリに分類されています:コア属性(hx-get、hx-post、hx-put、hx-patch、hx-delete)、リクエスト修飾子(hx-trigger、hx-vals、hx-headers、hx-include、hx-confirm、hx-disabled-elt、hx-sync、hx-indicator)、スワップとターゲット(hx-target、hx-swap、hx-swap-oob、hx-select、hx-select-oob)、ブラウザと履歴(hx-boost、hx-push-url、hx-replace-url、hx-history、hx-preserve)、イベント(htmx:beforeRequest、htmx:afterSwap、htmx:configRequest、およびインラインのhx-on:*ファミリー)、リクエストヘッダ(HX-Request、HX-Trigger、HX-Target、HX-Current-URL、HX-Prompt)、レスポンスヘッダ(HX-Trigger、HX-Redirect、HX-Refresh、HX-Reswap、HX-Retarget、HX-Reselect、HX-Push-Url、HX-Replace-Url、HX-Location)、拡張(hx-ext、sse、ws)。

各エントリには、受け付ける値、実際のHTML例、その属性が導入または変更されたhtmxバージョンが表示されます。クイックヒントパネルでは、インストール方法、トリガー修飾子、スワップスタイル、ターゲットセレクター、組み込みCSSクラス(.htmx-request.htmx-indicator)、よく使うレスポンスパターン、CSRFトークンの扱い、htmx 1.xから2.0への変更点を扱っています。

すべての処理はブラウザ内で完結します。サーバー側でのフィルタリングや分析は一切行いません。ページはオフラインでも動作するので、永続的なリファレンスとしてブックマークできます。

サーバーレンダリングのHTMLを書く方には、HTML要素リファレンスCSSセレクターリファレンスが役立ちます。イベントハンドラを扱う場合、JavaScript KeyCodeリファレンスはhtmxのkeyupなどのトリガーと相性が良いです。htmxでスワップしたフラグメントの中で複雑なCSSを書く際には、属性セレクターのパターンマッチングに正規表現チートシートが役立ちます。

使い方

  1. 上部の検索バーで、属性・イベント・ヘッダを名前で検索します(例:「swap」「trigger」「HX-Redirect」)。
  2. カテゴリバッジ(コア属性、イベント、レスポンスヘッダなど)をクリックして、特定のグループだけを表示します。
  3. 任意の行をクリックして展開し、受け付ける値、HTMLサンプル、バージョン情報を確認します。
  4. サンプルの横のCopyボタンでコードをクリップボードにコピー、Copy nameで属性名だけをコピーできます。
  5. クイックヒントパネルを開くと、インストール方法、トリガー修飾子、スワップスタイル、htmx 1.x と 2.0 の差分が確認できます。
  6. 各エントリのバージョンバッジ(例:1.0+、1.9+、2.0)で、自分のhtmxバージョンとの互換性を確認します。
  7. カテゴリフィルターの「All」をクリックすれば、すべてのエントリが再表示されます。

よくある質問

htmxとは何ですか?

htmxは、JavaScriptを書かずにHTML属性だけでインタラクティブなWeb UIを構築できる軽量(gzipで約14KB)なJavaScriptライブラリです。通常のHTML要素にhx-get、hx-target、hx-swapといった属性を追加すると、htmxがイベントを捕捉し、AJAXリクエストを送信し、サーバーから返されたHTMLフラグメントをDOMに差し替えます。サーバーレンダリングHTMLによって駆動されるSPAライクな体験が得られます。

hx-getとhx-postの違いは何ですか?

どちらも要素がトリガーされた際にAJAXリクエストを発行しますが、HTTPメソッドが異なります。hx-getはGETリクエスト(冪等、ボディなし、パラメータはURLに付与)を送ります——データの取得、ナビゲーション、フラグメントの更新に使います。hx-postはPOSTリクエスト(非冪等、パラメータはボディに含まれる)を送ります——フォーム、データの変更、作成・更新を伴うアクションに使います。htmxは対応するRESTメソッドとしてhx-put、hx-patch、hx-deleteもサポートしています。

htmx 2.0はhtmx 1.xと後方互換性がありますか?

ほぼ互換性がありますが、いくつかの破壊的変更があります。htmx 2.0(2024年リリース)はIE11サポートを廃止し、レガシーなhx-vars属性を削除(代わりにhx-valsをjs:プレフィックス付きで使う)、単一のhx-on属性をイベントごとに分割(例:hx-on:click、hx-on:htmx:after-request)しました。デフォルト動作も厳格化され、たとえば非アンカー要素ではhx-*属性のみで暗黙のGETが発行されなくなりました。既存の1.xアプリのほとんどは変更なしで動作しますが、完全なリストは公式の2.0移行ガイドを確認してください。

hx-triggerにはどのイベントを使うべきですか?

デフォルトのトリガーは要素によって異なります:ボタンや多くの要素ではclick、フォームではsubmit、入力やセレクトではchangeです。任意のDOMイベント名(keyup、change、focus、mouseenterなど)またはhtmx独自のイベント(load、revealed、intersect)で上書きできます。'changed'(値が変わったときだけ発火)、'delay:300ms'(デバウンス)、'throttle:500ms'(レート制限)、'from:#other'(別の要素で待ち受け)、'every 5s'(ポーリング)といった修飾子を組み合わせられます。検索しながら入力するUIの定番パターンはhx-trigger="keyup changed delay:300ms"です。

hx-targetとhx-swapの違いは何ですか?

hx-targetはレスポンスを受け取る要素を選択します(CSSセレクター、または'closest tr'、'find .body'、'next'、'previous'などの相対セレクター)。hx-swapはレスポンスをターゲットに対してどう配置するかを制御します——innerHTMLは中身を置き換え、outerHTMLは要素全体を置き換え、beforeendは中の末尾に追加、beforebeginは要素の前に挿入、deleteはターゲットを削除、noneはスワップせずイベントだけ発火します。両者を組み合わせることで、コンテンツ更新の場所と方法を細かく制御できます。

HX-Triggerなどのhtmxレスポンスヘッダはどう動きますか?

サーバーはレスポンスにHX-*ヘッダを含めることで、JavaScriptを書かずにクライアント側の動作を制御できます。HX-Triggerはクライアント側のイベントを発火(JSONで詳細データ付きイベントも可)、HX-Redirectはフルページリダイレクト、HX-Locationはhtmx経由のクライアントサイドリダイレクト、HX-Refreshはページリロード、HX-Push-Urlはブラウザ履歴の更新、HX-Reswap/HX-Retarget/HX-Reselectはそのレスポンスのスワップ設定を上書きします。サーバーロジックとhtmxクライアントを橋渡しする仕組みです。

データは安全ですか?

はい。このチートシートはローカルデータセットからクライアントサイドJavaScriptのみでレンダリングされる静的リファレンスです。属性名、検索クエリ、コピーしたスニペットがブラウザの外に出ることはなく、個別エントリと紐づくアナリティクスもありません。ページはオフラインでも動作するため、エアギャップ環境でもブックマークして恒久的なリファレンスとして使えます。

関連ツール