この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:5
ページ更新者:guest
更新日時:2026-06-11 07:07:02

タイトル: body要素
SEOタイトル: HTML body 要素完全ガイド

この記事の要点
  • は HTML ドキュメントの表示コンテンツを格納するルート要素
  • 直下には
    /
    /
    等のセクション要素を配置するのが現代的
  • onload / onunload 等のイベント属性は非推奨addEventListener を使う
  • CSS で body { margin: 0; } はリセット CSS の定番。ブラウザ既定の 8px 余白を消す
  • Dark Mode は color-scheme: dark light + prefers-color-scheme メディアクエリで実装

の役割

要素は HTML ドキュメントにおける表示コンテンツのルートコンテナです。ブラウザがユーザーに見せるテキスト、画像、フォーム、スクリプトなど、ほぼすべての可視要素は の内側に配置されます。HTML ドキュメントには がただ 1 つ存在し、 と兄弟関係になります。




    
    サンプル


    

サイトタイトル

...
© 2026 Example

HTML5 のセクション要素

HTML5 では 直下を、用途別のセマンティック要素で構造化するのが推奨されています。

ばかり並べる旧来の書き方より、SEO・アクセシビリティ・保守性が向上します。

要素用途ARIA role
ページ/セクションの先頭 (ロゴ、見出し、ナビ)banner
ナビゲーションリンクの集まりnavigation
ページの主コンテンツ (1 ページに 1 つ)main
独立した記事 (ブログ投稿、商品情報)article
関連するコンテンツのまとまりregion
補足情報、サイドバーcomplementary
ページ/セクションの末尾 (著作権、関連リンク)contentinfo

body の属性

かつての HTML4 では bgcolortextlinkvlinkbackground 等の見た目属性が定義されていましたが、HTML5 ではすべて廃止されました。スタイルは CSS で指定します。

現在使われる属性は、グローバル属性 (id / class / lang / dir 等) とイベント属性のみです。





イベント属性は非推奨

onload / onunload / onbeforeunload 等のイベント属性を に直接書く方法は動きますが、CSP (Content Security Policy) の inline スクリプト禁止に引っかかり、保守性も低いため非推奨です。

// ❌ 非推奨: 
// ✅ 推奨: addEventListener
window.addEventListener('load', () => {
    console.log('ページ読み込み完了');
});

window.addEventListener('DOMContentLoaded', () => {
    // DOM 構築完了 (load より早い)
});

window.addEventListener('beforeunload', (e) => {
    // ユーザーがページを離れる直前
    e.preventDefault();
    e.returnValue = '';  // 確認ダイアログ表示
});

CSS で body をスタイリング

リセット CSS の基本は body { margin: 0; } です。ブラウザ既定では 8px の余白が入っており、これを消さないとフルワイドのレイアウトが組めません。

/* リセット CSS の基本 */
body {
    margin: 0;
    padding: 0;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI",
                 "Hiragino Sans", "Yu Gothic", sans-serif;
    font-size: 16px;
    line-height: 1.7;
    color: #333;
    background: #fff;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

/* ページ全体の高さを 100% に */
html, body {
    height: 100%;
}

/* スクロールバーで横揺れしないように */
html {
    overflow-y: scroll;
}

Dark Mode 対応

OS の設定 (ライト/ダーク) に追従する CSS を に対して書きます。color-scheme プロパティを宣言すると、スクロールバーやフォーム要素の色も自動でダーク化されます。

:root {
    color-scheme: light dark;  /* ブラウザのデフォルト UI を両対応 */
}

body {
    background: #fff;
    color: #333;
}

@media (prefers-color-scheme: dark) {
    body {
        background: #1a1a1a;
        color: #e5e5e5;
    }
}

/* CSS Variables での実装 */
body {
    --bg: #fff;
    --fg: #333;
    background: var(--bg);
    color: var(--fg);
}
@media (prefers-color-scheme: dark) {
    body {
        --bg: #1a1a1a;
        --fg: #e5e5e5;
    }
}

HTML5 Outline と body

HTML5 ではドキュメントの構造をセクション要素のネストで表現します。 はトップレベルのセクションルートで、見出し (

) と組み合わせて Outline (見出し階層) を構成します。スクリーンリーダーや SEO クローラーがこの構造を解釈します。

script の配置位置

パフォーマンスのため、

document.body と DOM API

JavaScript から 要素にアクセスする標準 API:

// body 要素を取得
const body = document.body;

// クラスを追加 (テーマ切替)
body.classList.add('theme-dark');
body.classList.toggle('menu-open');

// データ属性
body.dataset.page = 'home';  // 

// スクロール位置
window.scrollY;              // 現在のスクロール量
body.scrollHeight;           // ページ全体の高さ
window.innerHeight;          // ビューポート高さ

// スクロールロック (モーダル表示時)
body.style.overflow = 'hidden';

noscript と dialog

は HTML5.2+ のネイティブモーダルで、 内に配置します。


    

    
        

本当に削除しますか?

FAQ

Q: は省略できる?
A: HTML5 仕様上は省略可能 (パーサが自動補完) ですが、明示的に書くべきです。CSS 適用やイベント属性、可読性のためにも省略しないでください。

Q: に背景画像を設定するには?
A: CSS で body { background: url(bg.jpg) no-repeat center/cover fixed; }。HTML4 の background 属性は廃止です。

Q: body の高さを画面いっぱいにしたい
A: html, body { height: 100%; } または body { min-height: 100vh; }。後者の方が現代的で flex/grid と相性良し。