コンテンツにスキップ

アバター

hc-avatar は、写真アバターには <img> に、画像がないときの イニシャルのフォールバックには <span> に適用します。どちらも同じ 円形の面、サイズ、形状バリアントを共有します。

別名: プロフィール画像、ユーザーアイコン。

Ada LovelaceJohn Smith

コンポーネントは object-fit: coveroverflow: hidden を設定する ため、どんなアスペクト比の画像も中央寄せの正方形クロップとして描画 されます。(上のプレビューはインラインのプレースホルダー画像です。 src は実際の写真に向けてください。)

画像がないときは、代わりに <span> を描画します。フルネームは aria-label に運ばせてください。見えるイニシャルは短く (1〜2 文字)、グループ内でユーザーを識別できる程度に一意であるべき です。

ALJCHL

写真がないかもしれないときは、画像とイニシャルのフォールバックを 1 つの .hc-avatar で包みます。installAvatar() ビヘイビアが画像の ネイティブな load / error イベントを監視し、ラッパーに data-state を設定するため、画像が失敗するとフォールバックが自動で 現れます。素のイニシャルと確実に読み込める画像に JavaScript は不要 です — この自動フォールバックだけが必要とします:

import { installAvatar } from '@hypermedia-components/core';
installAvatar(); // idempotent; returns an uninstaller

ゼロ設定の @hypermedia-components/core/behaviors エントリは自動で インストールします。

アクセシブルな名前はラッパーが運びます(role="img" + aria-label)。画像は装飾(alt="")で、フォールバックはその名前を 視覚的に複製するため aria-hidden です。

installAvatar() はラッパーの data-state に次のいずれかを書くため、 各フェーズをスタイルできます:

data-state意味
loading画像を取得中。スロットが空にならないようフォールバックを表示。
pending取得中だが data-delay が設定されている — フラッシュを避けるため、その時間はフォールバックを隠したまま(下記参照)。
loaded画像がデコードされた。フォールバックは隠れる。
error画像が失敗した(または src がない)。フォールバックが表示され、壊れた画像は取り除かれる。

高速な接続では画像が数ミリ秒で届くことが多く、先にイニシャルを見せる とフラッシュになります。data-delay="<ms>" を設定すると、その時間は フォールバックを隠したままにします — 画像が先に読み込まれれば フォールバックは決して現れず、そうでなければ遅延が過ぎたときに現れ ます。

<span class="hc-avatar" role="img" aria-label="Ada Lovelace" data-delay="500">
<img class="hc-avatar__image" src="/users/ada.jpg" alt="">
<span class="hc-avatar__fallback" aria-hidden="true">AL</span>
</span>

このパターンはプログレッシブです: 画像がフォールバックに重なるため、 読み込みに成功すれば installAvatar() がなくてもイニシャルは覆われ ます。トレードオフは、壊れた画像は JS なしでは取り除かれないこと です — ブラウザの壊れた画像インジケーターがフォールバックの上に 見えるかもしれません。画像の欠落をサーバサイドで検知できるなら、 <span class="hc-avatar">…</span> のイニシャル形を直接描画して ください。

data-sizexssmmd(デフォルト)、lgxl を受け付け ます。

JSJSJSJSJS

data-shape="square" は、完全な円の代わりに正方形プリセットの角丸に します。

JSJS

アバターの列を .hc-avatar-group で包むと重なります — 最初以外の各 アバターは負のマージンで引き戻され、ページ背景に合わせたリングが 付くため、重なりがきれいに読めます。

ABCD
  • <img class="hc-avatar"> には常に意味のある alt テキストを — 典型的にはユーザーのフルネームです。
  • イニシャルのフォールバックでは、見えるテキストは短く視覚的です。 スクリーンリーダーにフルネームを与えるには aria-label を使って ください。そうしないとユーザーはただの「JS」と読み上げられ、 ほとんど役に立ちません。
  • 純粋に装飾のアバター(例: すでに読み上げられる名前の隣の サムネイル)には、二重読み上げを避けるためアバターに aria-hidden="true" を設定してください。

component トークン(component.tokens.json):

トークンパス用途
avatar.sizeデフォルトの寸法。
avatar.radius / square-radius円と正方形の角丸。
avatar.bg / fgフォールバックの面の色。
avatar.font-size / font-weightイニシャルのテキストスタイル。
avatar.xs.* / sm.* / lg.* / xl.*専用のサイズ上書き。
生成される CSS 変数を表示
--hc-avatar-size | -radius | -square-radius
--hc-avatar-bg | -fg
--hc-avatar-font-size | -font-weight
--hc-avatar-xs-size | -xs-font-size
--hc-avatar-sm-size | -sm-font-size
--hc-avatar-lg-size | -lg-font-size
--hc-avatar-xl-size | -xl-font-size
  • バッジ — 小さなステータスのピル。アバターの上に置かれることもあります。