コンテンツにスキップ

空状態

hc-empty は中央寄せの空状態ブロックです: メディアスロット(アイコン またはイラスト)、タイトル、説明、任意のアクション。「結果なし」、 「まだ何もない」、初回起動の状態に使います。トークン駆動の間隔、 JavaScript なし — そして htmx の「結果なし」パーシャルスワップと 自然に組み合います。

別名: 空状態、エンプティステート、データなし表示。

No results

We couldn’t find anything matching your search. Try a different term or clear the filters.

パーツ必須用途
hc-empty__media任意アイコン / イラストのスロット。
hc-empty__titleはい短い見出し。
hc-empty__description任意1〜2 文の案内。
hc-empty__actions任意1 つ以上の回復アクション。

メディアスロットは正方形(--hc-empty-media-size)で、中のインライン <svg><img> はボックスを満たします。説明は幅が制限され (--hc-empty-description-max-width)、長い文言も読みやすいまま です。

リストのエンドポイントに、行かこの空ブロックのどちらかをパーシャルと して返させます。空状態のスワップインが読み上げられるよう、ターゲットを aria-live 領域で包んでください。

<div id="results" aria-live="polite"
data-hx-get="/search?q=widgets"
data-hx-trigger="load">
<!-- The server returns the results list, or, when there are none: -->
<div class="hc-empty">
<div class="hc-empty__media" aria-hidden="true">🔍</div>
<p class="hc-empty__title">No matches for "widgets"</p>
<p class="hc-empty__description">Check the spelling or try a broader term.</p>
<div class="hc-empty__actions">
<a class="hc-button" href="/search" data-hx-get="/search" data-hx-target="#results">Reset search</a>
</div>
</div>
</div>

挙動は htmx に留まります — hc-empty は「結果なし」レスポンスの 見た目にすぎません。

  • role は文脈に合うよう作者に委ねられています。ページの静的な 領域としてなら role は不要です。ユーザー入力の結果として htmx が スワップインするときは、(上のように)ターゲットかブロックを aria-live="polite" で包み、新しい状態が読み上げられるようにして ください。
  • 装飾のメディアグリフ / イラストには aria-hidden="true" を設定して 読み上げから外してください — 意味はタイトルが運びます。
  • 空状態がセクションを担うときは、ページのアウトラインに合う見出し レベルを選んでください: <p> の代わりに <h2 class="hc-empty__title"> など。クラスはどちらの要素も スタイルします。
  • 回復アクションのラベルは具体的に(「フィルタをクリア」「最初の アイテムを追加」)。素の「OK」は避けてください。
トークンパス用途
empty.paddingブロックのパディング。
empty.media-sizeメディアスロットのサイズ + グリフサイズ。
empty.media-fgメディア(アイコン)の色。
empty.media-marginメディアの下のギャップ。
empty.title-font-size / -font-weight / -fgタイトルの文字。
empty.description-font-size / -fg説明の文字。
empty.description-max-width説明の行長の上限。
empty.description-marginタイトルの下のギャップ。
empty.actions-marginアクションの上のギャップ。
生成される CSS 変数を表示
--hc-empty-padding
--hc-empty-media-size | -media-fg | -media-margin
--hc-empty-title-font-size | -title-font-weight | -title-fg
--hc-empty-description-font-size | -description-fg
--hc-empty-description-max-width | -description-margin
--hc-empty-actions-margin
  • スピナー — 空(または 実りある)結果に先立つ読み込み状態。
  • スケルトン — コンテンツ読み込み中のプレースホルダー形状。
  • カード — パネル内の 空状態の定番コンテナ。

レシピでの利用: 検索結果の上限