ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
基本: img 要素
<!-- 最小限 -->
<img src="logo.png" alt="会社ロゴ">
<!-- サイズ指定(CLS 防止のため推奨) -->
<img src="hero.jpg" alt="商品" width="800" height="600">
<!-- レスポンシブ + アクセシビリティ -->
<img
src="photo.jpg"
alt="鎌倉の海辺に建つ古民家カフェ"
width="1200"
height="800"
loading="lazy"
decoding="async"
style="max-width:100%; height:auto">
主要属性
| 属性 | 意味 | 推奨 |
|---|---|---|
src | 画像 URL | 必須 |
alt | 代替テキスト | 必須。装飾なら alt="" |
width / height | 表示サイズ | CLS 防止に推奨 |
loading | lazy / eager | 初期画面外は lazy |
decoding | async / sync / auto | 通常 async |
fetchpriority | high / low / auto | LCP 画像は high |
srcset | 複数解像度の候補 | Retina 対応 |
sizes | 表示サイズの宣言 | srcset と併用 |
crossorigin | CORS | Canvas 描画時 |
referrerpolicy | Referer 制御 | 必要時 |
alt 属性のベストプラクティス
<!-- ✅ 内容を伝える -->
<img src="cat.jpg" alt="窓辺で日向ぼっこする三毛猫">
<!-- ✅ 装飾的画像(隣のテキストで十分) -->
<img src="check-icon.svg" alt="">
<!-- ✅ リンク内の画像はリンク先を説明 -->
<a href="/about"><img src="logo.png" alt="会社情報"></a>
<!-- ❌ 文字を画像にしただけ -->
<img src="title.png" alt="商品一覧">
<!-- → 可能なら HTML テキスト + CSS で実現 -->
<!-- ❌ 重複した情報 -->
<figure>
<img src="cat.jpg" alt="可愛い猫">
<figcaption>可愛い猫</figcaption>
</figure>
<!-- → alt="" にして figcaption に任せる -->
srcset / sizes: レスポンシブ画像
デバイスの画面密度と表示幅に応じて最適な画像を配信:
<!-- パターン1: Retina 対応(同じ表示サイズ、解像度違い) -->
<img
src="photo-1x.jpg"
srcset="photo-1x.jpg 1x,
photo-2x.jpg 2x,
photo-3x.jpg 3x"
alt="商品">
<!-- パターン2: レイアウト幅に応じて切替 -->
<img
src="photo-800.jpg"
srcset="photo-400.jpg 400w,
photo-800.jpg 800w,
photo-1600.jpg 1600w"
sizes="(max-width: 600px) 100vw,
(max-width: 1200px) 50vw,
800px"
alt="商品">
<!--
sizes の読み方:
- スマホ (max-width: 600px): 画面幅全体に表示 → 400w を選択
- タブレット (max-width: 1200px): 画面幅の半分 → 800w を選択
- PC: 800px 固定 → 800w を選択 (Retina なら 1600w)
-->
picture 要素: フォーマット切替
WebP / AVIF のような新世代フォーマットを、対応ブラウザにだけ配信:
<picture>
<!-- 最新の高効率フォーマット -->
<source type="image/avif" srcset="photo.avif">
<source type="image/webp" srcset="photo.webp">
<!-- フォールバック -->
<img src="photo.jpg" alt="商品" width="800" height="600">
</picture>
<!-- アートディレクション: デバイスごとに違う画像 -->
<picture>
<source media="(max-width: 600px)" srcset="hero-mobile.jpg">
<source media="(max-width: 1200px)" srcset="hero-tablet.jpg">
<img src="hero-desktop.jpg" alt="トップビジュアル">
</picture>
<!-- 両方併用 -->
<picture>
<source
type="image/avif"
srcset="photo-400.avif 400w, photo-800.avif 800w, photo-1600.avif 1600w"
sizes="(max-width: 600px) 100vw, 800px">
<source
type="image/webp"
srcset="photo-400.webp 400w, photo-800.webp 800w, photo-1600.webp 1600w"
sizes="(max-width: 600px) 100vw, 800px">
<img
src="photo-800.jpg"
srcset="photo-400.jpg 400w, photo-800.jpg 800w, photo-1600.jpg 1600w"
sizes="(max-width: 600px) 100vw, 800px"
alt="商品"
width="800" height="600">
</picture>
画像フォーマットの比較
| 形式 | 用途 | 圧縮 | 透過 | アニメ | 対応 |
|---|---|---|---|---|---|
| JPEG | 写真 | 非可逆 | × | × | 全ブラウザ |
| PNG | 図・透過 | 可逆 | ○ | × | 全ブラウザ |
| GIF | 古い画像・アニメ | 可逆 (8bit) | ○ | ○ | 全ブラウザ |
| WebP | 万能(JPEG/PNG 代替) | 非可逆/可逆 | ○ | ○ | ○ (IE 除く) |
| AVIF | 最高効率 | 非可逆/可逆 | ○ | ○ | ○ (Chrome/Firefox/Safari) |
| SVG | アイコン・図 | ベクター | ○ | ○ | 全ブラウザ |
2026 年現在の推奨: AVIF → WebP → JPEG/PNG のフォールバック。SVG はアイコン・ロゴに。
パフォーマンス: lazy loading
<!-- 初期画面外の画像は lazy で遅延読込 -->
<img src="below-fold.jpg" alt="..." loading="lazy">
<!-- LCP 画像(メインビジュアル)は eager + 高優先度 -->
<img
src="hero.jpg"
alt="メインビジュアル"
loading="eager"
fetchpriority="high">
<!-- decoding=async でメインスレッドを止めない -->
<img src="photo.jpg" alt="..." loading="lazy" decoding="async">
figure と figcaption
<figure>
<img src="chart.png" alt="2025 年売上推移グラフ">
<figcaption>
図 1: 2025 年の月次売上推移(出典: 自社集計)
</figcaption>
</figure>
<!-- 複数画像のセット -->
<figure>
<picture>
<source type="image/avif" srcset="photo.avif">
<img src="photo.jpg" alt="">
</picture>
<figcaption>商品 A の正面・側面ビュー</figcaption>
</figure>
背景画像 vs img タグの使い分け
| 用途 | 推奨 | 理由 |
|---|---|---|
| 商品写真・記事内画像 | <img> | 意味あるコンテンツ → alt が必要 |
| ヒーローセクションの背景 | CSS background | 装飾、テキストが上に乗る |
| 装飾的アイコン | CSS background / SVG | 意味なし → alt 不要 |
| ボタンの中のアイコン | SVG inline | 色変更・アニメ容易 |
| ロゴ | <img> + alt | 会社情報を SR にも |
| UI 装飾(罫線・パターン) | CSS background | 装飾 |
画像最適化のチェックリスト
- 表示サイズの 1〜2 倍の解像度で書き出す(過剰な大解像度は無駄)
- JPEG 品質は 80% 程度で十分(ファイルサイズと品質のバランス)
- WebP / AVIF への変換を CI / CDN で自動化(Cloudinary, Imgix, Cloudflare Images)
width/height属性で CLS 防止- 初期画面外は
loading="lazy" - LCP 画像(最大コンテンツ)は
fetchpriority="high" - SVG は
svgo等で minify - PNG は
pngquant/oxipngで圧縮
JavaScript で動的に画像
// 画像のプリロード
const img = new Image();
img.src = '/big-image.jpg';
img.onload = () => console.log('読込完了');
// IntersectionObserver で独自 lazy loading
const observer = new IntersectionObserver(entries => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const img = entry.target;
img.src = img.dataset.src;
observer.unobserve(img);
}
});
});
document.querySelectorAll('img[data-src]').forEach(img => observer.observe(img));
// Canvas で画像加工
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
const image = new Image();
image.crossOrigin = 'anonymous'; // CORS 注意
image.onload = () => {
canvas.width = image.width;
canvas.height = image.height;
ctx.drawImage(image, 0, 0);
const dataURL = canvas.toDataURL('image/jpeg', 0.8);
// → 圧縮済の base64
};
image.src = 'photo.jpg';
SEO とアクセシビリティ
- alt 属性は SEO 上もスクリーンリーダー上も最重要
- ファイル名も意味のあるものに(
IMG_1234.jpgではなくkamakura-cafe.jpg) - 構造化データ(
ImageObject)でリッチリザルト化 - sitemap.xml に
<image:image>を含めて Google 画像検索に - 遅延読込は SEO 影響なし(Googlebot は lazy 対応)
FAQ
Q: width / height を指定しなくても CSS で何とかなる?
A: 見た目は OK でも、HTML パース時点で画像領域が確保されずCLS(Cumulative Layout Shift)が発生します。Core Web Vitals に悪影響です。
Q: WebP をサポートしないブラウザは?
A: 2026 年現在ほぼ無い(旧 IE くらい)。それでも <picture> でフォールバックすれば安全です。
Q: alt の文章は長くてもいい?
A: 必要な情報を伝えるのが最優先。複雑な図なら 100 文字超でも OK。あまりに長いなら aria-describedby で別 div に詳細を書きます。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 2026-06-22 12:19:10
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?