ImageFrame

縦横比を保って画像を表示します。

窓辺の机の写真
窓辺の机.jpg552 KB · 9月26日
暮らしの記録の表紙
暮らしの記録.pdf1.2 MB · 9月15日
画像なし
見取り図.png未登録
portraitの枠に収める
portraitの枠に全体を表示した横長の写真
全体を表示(横長)
portraitの枠に全体を表示した縦長の表紙
全体を表示(縦長)
portraitの枠に切り抜いた写真
切り抜いて表示
画像なし
未登録
squareの枠に収める
squareの枠に全体を表示した横長の写真
全体を表示(横長)
squareの枠に全体を表示した縦長の表紙
全体を表示(縦長)
squareの枠に切り抜いた写真
切り抜いて表示
画像なし
未登録
landscapeの枠に収める
landscapeの枠に全体を表示した横長の写真
全体を表示(横長)
landscapeの枠に全体を表示した縦長の表紙
全体を表示(縦長)
landscapeの枠に切り抜いた写真
切り抜いて表示
画像なし
未登録
長い名前・右から左に読む場合
秋の読書会の会場の写真
autumn-reading-club-2026-venue-photo-original.jpg3.4 MB · 9月20日
صورة المكتب
المكتب.jpg٥٥٢ كيلوبايت

使いどころ

  • ファイルの縮小や表紙など、比率をそろえて画像を並べる時に使います。
  • 画像を名前と状態のある一件として示す時は FileItem、切り抜く範囲を調整させる時は ImageCropper、人の写真は Avatar を使います。

使い方

src と alt を渡します。caption に名前、meta に大きさや日付を渡すと、画像の下に中央そろえで書きます。名前は12pxの黒い太字、meta は11pxの灰色の文字です。

shape で枠の比率を決めます。portrait は5:7、square は1:1で、どちらも幅8remまで、landscape は16:9で幅16remまで広がります。比率の枠は並べた時の位置をそろえるためだけに使い、色を持ちません。

画像はBC2の添付の画像と同じく、1px #dddddd の枠の内側に1pxの白い余白を取って囲み、影は付けません。fit="contain" は画像全体を枠の中央に置き、枠を画像そのものに沿わせます。fit="cover" は枠いっぱいに切り抜き、枠も比率の枠に沿わせます。角丸は付けません。

src が無い時は、罫線の輪郭を付けた淡い灰色の面に missingLabel を11pxの灰色の文字で書いて、画像の場所を示します。

画像は loading="lazy" で読み込みます。JavaScriptは使いません。

アクセシビリティ

  • ルートは figure で、caption と meta は figcaption になります。
  • alt は画像の代替テキストです。画像が無い時は「alt:missingLabel」を role="img" の名前として読み上げます。

API

ImageFrame

ImageFrameのprops
名前型既定値説明
srcstring画像のURL。渡さなければ淡い背景にmissingLabelを置いて、画像がないことを示す。
alt必須string画像の代替テキスト。画像がない時は「alt:missingLabel」を読み上げる。
shape"portrait" | "square" | "landscape""portrait"枠の比率。portraitは5:7で幅8remまで、squareは1:1で幅8remまで、landscapeは16:9で幅16remまで。
fit"contain" | "cover""contain"containは画像全体を枠の中央に収め、coverは枠いっぱいに切り抜く。
missingLabelstring"画像なし"画像がない時に枠に書く文言。
captionstring画像の下に中央そろえで書く名前(ファイル名など)。
metastring名前の下に灰色の小さな文字で添えるサイズや日付。

ほかに、<figure>へ標準のHTML属性を渡せます。

読み込むCSS:layers.css、reset.css、tokens.css、base.css、layout.css、components/image-frame.css

コード

HTML
Hono JSX