HTMLタグの種類をやさしく解説|初心者でもわかる用途別まとめ

html

「HTMLタグって種類が多すぎて覚えられない…」
「どのタグをいつ使えばいいのか分からない」
「効率的にHTMLタグを理解する方法はないの?」

ホームページを作るときに必ず使うHTML(HyperText Markup Language)。その中核となるのがタグという仕組みです。しかし、HTMLには100種類以上のタグが存在し、初心者にとって すべてを覚えるのは非常に困難に感じられます。

でも大丈夫です!実際のWeb制作で頻繁に使われるタグは限られており、それらを用途別にグループ分けして理解すれば、効率的にマスターできます。

この記事では、よく使うHTMLタグの種類を5つのカテゴリに分けて、わかりやすく解説します。

スポンサーリンク

HTMLタグの基本概念

タグとは何か

マークアップの仕組み

HTMLタグは、コンテンツに意味や構造を与えるための「印」のような役割を果たします。文書の各部分が「見出し」なのか「段落」なのか「リンク」なのかを、コンピューターや検索エンジンに教える重要な仕組みです。

<h1>これは見出しです</h1>
<p>これは段落の文章です。</p>
<a href="example.com">これはリンクです</a>

タグの構造

多くのHTMLタグは、開始タグと終了タグのペアで構成されます:

<タグ名>内容</タグ名>
<タグ名 属性="値">内容</タグ名>

なぜ分類が重要なのか

学習効率の向上

HTMLタグを用途別に分類することで、以下のメリットがあります:

  • 覚えやすい: 関連するタグをまとめて学習
  • 選びやすい: 目的に応じて適切なタグを素早く特定
  • 理解しやすい: タグの役割と使い場面が明確

実用性の向上

分類を理解することで、実際のWebページ制作時に:

  • 適切な HTML構造を設計できる
  • SEO(検索エンジン最適化)に有効なマークアップができる
  • アクセシビリティ(利用しやすさ)を考慮したページが作れる

HTMLタグの5つの種類

HTMLタグは用途によって、大きく以下の5つに分類できます:

1. 文書構造タグ

ページの骨組みや区画を作るタグ群

2. テキスト関連タグ

文章の見出し、段落、強調などを表現するタグ群

3. メディア・リンクタグ

画像、動画、音声、リンクなどを埋め込むタグ群

4. リスト・表組みタグ

箇条書きや表を作成するタグ群

5. フォーム関連タグ

入力フォームやボタンを作成するタグ群

それぞれの詳細を見ていきましょう。

1. 文書構造タグ

基本的な文書構造

文書構造タグは、HTMLページ全体の骨組みを作る最も基本的なタグ群です。

必須の構造タグ

タグ名用途説明
<html>HTML文書全体すべての内容を囲む最上位要素
<head>メタ情報セクションページの設定や情報を記述
<body>表示コンテンツ実際にブラウザに表示される内容

基本構造の例

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>ページのタイトル</title>
</head>
<body>
    <p>ここに表示される内容を書きます</p>
</body>
</html>

セマンティック(意味的)構造タグ

HTML5で導入された、意味的に明確な構造を表現するタグ群です。

レイアウト用構造タグ

タグ名用途使用場面
<header>ヘッダー部分ページやセクションの冒頭
<nav>ナビゲーションメニューや目次
<main>メインコンテンツページの主要内容
<section>セクション章や節の区切り
<article>独立した記事ブログ記事、ニュース等
<aside>サイドコンテンツサイドバー、関連情報
<footer>フッター部分ページやセクションの末尾

実用的な構造例

<body>
    <header>
        <h1>サイトのタイトル</h1>
        <nav>
            <ul>
                <li><a href="/">ホーム</a></li>
                <li><a href="/about">会社概要</a></li>
                <li><a href="/contact">お問い合わせ</a></li>
            </ul>
        </nav>
    </header>

    <main>
        <article>
            <header>
                <h2>記事のタイトル</h2>
                <time datetime="2024-01-15">2024年1月15日</time>
            </header>
            
            <section>
                <h3>第1章:はじめに</h3>
                <p>記事の内容...</p>
            </section>
            
            <section>
                <h3>第2章:詳細解説</h3>
                <p>詳細な説明...</p>
            </section>
        </article>

        <aside>
            <h3>関連記事</h3>
            <ul>
                <li><a href="/article1">関連記事1</a></li>
                <li><a href="/article2">関連記事2</a></li>
            </ul>
        </aside>
    </main>

    <footer>
        <p>&copy; 2024 私の会社. All rights reserved.</p>
    </footer>
</body>

汎用コンテナタグ

divとspanの使い分け

タグ名特徴用途
<div>ブロックレベル要素レイアウトの区切り、グループ化
<span>インライン要素文章の一部を装飾、特定部分の意味付け

使用例

<!-- div: ブロックレベル(改行される) -->
<div class="card">
    <div class="card-header">
        <h3>カードのタイトル</h3>
    </div>
    <div class="card-body">
        <p>カードの内容</p>
    </div>
</div>

<!-- span: インライン(改行されない) -->
<p>この文章の<span class="highlight">この部分だけ</span>ハイライトします。</p>
<p>価格は<span class="price">1,980円</span>です。</p>

2. テキスト関連タグ

見出しタグ

見出し階層の重要性

見出しタグ(h1-h6)は、文書の階層構造を表現する重要な要素です。SEOやアクセシビリティの観点からも正しい使い方が求められます。

タグ名重要度使用場面
<h1>最重要ページのメインタイトル(1ページに1つ)
<h2>大見出し主要なセクションの見出し
<h3>中見出しサブセクションの見出し
<h4>小見出し詳細項目の見出し
<h5>より小さい見出し細分化された項目
<h6>最小見出し最も詳細なレベル

正しい見出し構造の例

<h1>HTMLガイド完全版</h1>
    <h2>HTMLの基礎知識</h2>
        <h3>HTMLとは何か</h3>
        <h3>HTMLの歴史</h3>
    <h2>HTMLタグの種類</h2>
        <h3>構造タグ</h3>
            <h4>基本構造タグ</h4>
            <h4>セマンティックタグ</h4>
        <h3>テキストタグ</h3>
            <h4>見出しタグ</h4>
            <h4>段落タグ</h4>

段落・改行タグ

基本的なテキスト構造

タグ名用途特徴
<p>段落関連する文章をまとめる
<br>改行強制的な改行(段落内)
<hr>水平線セクションの区切り

使用例

<p>これは最初の段落です。関連する内容をまとめて一つの段落として記述します。</p>

<p>これは二番目の段落です。<br>
段落内で改行したい場合はbrタグを使用します。<br>
ただし、多用は避けましょう。</p>

<hr>

<p>水平線で区切った後の新しいセクションです。</p>

テキスト装飾・強調タグ

意味的な強調

タグ名意味表示使用場面
<strong>重要性の強調太字重要な情報、警告
<em>語調の強調斜体感情的な強調、イントネーション
<mark>ハイライト黄色背景検索結果のマーキング
<small>付帯情報小さい文字注釈、免責事項

引用・コード関連

タグ名用途使用場面
<blockquote>長い引用文献からの引用
<q>短い引用文章中の引用
<cite>引用元作品名、人名
<code>インラインコードプログラムコード
<pre>整形済みテキストコードブロック

実用的な使用例

<!-- 強調の使い分け -->
<p>この商品は<strong>期間限定</strong>で販売中です。</p>
<p>私は<em>本当に</em>この映画が好きです。</p>
<p><mark>重要</mark>な部分をハイライトしました。</p>
<p><small>※価格は税込み表示です</small></p>

<!-- 引用の例 -->
<blockquote cite="https://example.com">
    <p>プログラミングは芸術と科学の融合である。</p>
    <footer>— <cite>著名な開発者</cite></footer>
</blockquote>

<p>彼は<q>明日必ず来ます</q>と約束しました。</p>

<!-- コードの例 -->
<p>JavaScriptで変数を宣言するには<code>let name = "太郎";</code>と書きます。</p>

<pre><code>
function greet(name) {
    return `Hello, ${name}!`;
}
</code></pre>

3. メディア・リンクタグ

リンクタグ(<a>)

基本的なリンク種類

リンクは Webの最も重要な機能の一つです。様々な種類のリンクを適切に使い分けることが大切です。

リンク種類記述例用途
外部サイト<a href="https://example.com">他のWebサイトへ
内部ページ<a href="/about.html">同じサイト内のページ
アンカー<a href="#section1">同じページ内の特定箇所
メール<a href="mailto:test@example.com">メールアプリを起動
電話<a href="tel:03-1234-5678">電話アプリを起動

リンクの属性

属性用途
hrefリンク先URLhref="https://example.com"
target開き方target="_blank"(新しいタブ)
rel関係性rel="noopener"(セキュリティ)
downloadダウンロードdownload="filename.pdf"
titleツールチップtitle="詳細情報"

実践的なリンク例

<!-- 基本的なリンク -->
<a href="https://www.google.com">Googleで検索</a>

<!-- 新しいタブで開く外部リンク -->
<a href="https://example.com" target="_blank" rel="noopener noreferrer">
    外部サイト(新しいタブ)
</a>

<!-- ページ内リンク -->
<a href="#contact-section">お問い合わせセクションへ</a>

<!-- メール・電話リンク -->
<a href="mailto:info@example.com?subject=お問い合わせ">メールで連絡</a>
<a href="tel:03-1234-5678">電話をかける</a>

<!-- ファイルダウンロード -->
<a href="/files/brochure.pdf" download="会社案内.pdf">
    パンフレットをダウンロード
</a>

画像タグ(<img>)

必須属性と推奨属性

属性必須用途
src画像ファイルのパスsrc="photo.jpg"
alt代替テキストalt="商品の写真"
width幅の指定width="300"
height高さの指定height="200"
loading読み込み方法loading="lazy"
titleツールチップtitle="画像の詳細説明"

画像の使用例

<!-- 基本的な画像 -->
<img src="product.jpg" alt="新商品のスマートフォン">

<!-- サイズ指定付き画像 -->
<img src="logo.png" alt="会社ロゴ" width="200" height="50">

<!-- 遅延読み込み(パフォーマンス向上) -->
<img src="large-image.jpg" alt="高解像度写真" loading="lazy">

<!-- レスポンシブ画像 -->
<img src="responsive.jpg" 
     alt="レスポンシブ対応画像"
     style="max-width: 100%; height: auto;">

レスポンシブ画像の高度な例

<picture>
    <source media="(max-width: 768px)" srcset="mobile.jpg">
    <source media="(max-width: 1024px)" srcset="tablet.jpg">
    <img src="desktop.jpg" alt="デバイス別最適化画像">
</picture>

動画・音声タグ

動画埋め込み(<video>

<video controls width="640" height="480">
    <source src="movie.mp4" type="video/mp4">
    <source src="movie.webm" type="video/webm">
    <p>お使いのブラウザは動画再生に対応していません。</p>
</video>

<!-- 自動再生(注意:多くのブラウザで制限あり) -->
<video autoplay muted loop>
    <source src="background.mp4" type="video/mp4">
</video>

音声埋め込み(<audio>

<audio controls>
    <source src="podcast.mp3" type="audio/mpeg">
    <source src="podcast.ogg" type="audio/ogg">
    <p>お使いのブラウザは音声再生に対応していません。</p>
</audio>

外部動画の埋め込み

<!-- YouTube動画の埋め込み -->
<iframe width="560" height="315" 
        src="https://www.youtube.com/embed/VIDEO_ID" 
        title="YouTube video player" 
        frameborder="0" 
        allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
        allowfullscreen>
</iframe>

4. リスト・表組みタグ

リスト(箇条書き)タグ

順序なしリスト(<ul>

点や記号で項目を表示するリストです。

<ul>
    <li>項目1</li>
    <li>項目2</li>
    <li>項目3</li>
</ul>

順序付きリスト(<ol>

番号付きで項目を表示するリストです。

<ol>
    <li>最初のステップ</li>
    <li>次のステップ</li>
    <li>最後のステップ</li>
</ol>

入れ子リストの例

<ul>
    <li>フルーツ
        <ul>
            <li>りんご</li>
            <li>バナナ</li>
            <li>オレンジ</li>
        </ul>
    </li>
    <li>野菜
        <ul>
            <li>にんじん</li>
            <li>ブロッコリー</li>
            <li>トマト</li>
        </ul>
    </li>
</ul>

番号の種類を指定

<!-- ローマ数字 -->
<ol type="I">
    <li>第一章</li>
    <li>第二章</li>
    <li>第三章</li>
</ol>

<!-- アルファベット -->
<ol type="A">
    <li>項目A</li>
    <li>項目B</li>
    <li>項目C</li>
</ol>

<!-- 開始番号を指定 -->
<ol start="5">
    <li>5番目の項目</li>
    <li>6番目の項目</li>
    <li>7番目の項目</li>
</ol>

定義リスト(<dl>)

用語とその説明をペアで表示する特殊なリストです。

<dl>
    <dt>HTML</dt>
    <dd>HyperText Markup Languageの略。Webページの構造を定義する言語。</dd>
    
    <dt>CSS</dt>
    <dd>Cascading Style Sheetsの略。Webページの見た目を装飾する言語。</dd>
    
    <dt>JavaScript</dt>
    <dd>Webページに動的な機能を追加するプログラミング言語。</dd>
</dl>

表組み(テーブル)タグ

基本的なテーブル構造

タグ名用途説明
<table>表全体テーブルの外枠
<caption>表のタイトルテーブルの説明
<thead>ヘッダー部分見出し行のグループ
<tbody>ボディ部分データ行のグループ
<tfoot>フッター部分合計行など
<tr>テーブルの1行
<th>ヘッダーセル見出しセル(太字)
<td>データセル通常のデータセル

実用的なテーブル例

<table>
    <caption>2024年第1四半期売上実績</caption>
    
    <thead>
        <tr>
            <th>月</th>
            <th>売上(万円)</th>
            <th>前年比</th>
            <th>達成率</th>
        </tr>
    </thead>
    
    <tbody>
        <tr>
            <td>1月</td>
            <td>1,200</td>
            <td>+15%</td>
            <td>105%</td>
        </tr>
        <tr>
            <td>2月</td>
            <td>1,350</td>
            <td>+8%</td>
            <td>98%</td>
        </tr>
        <tr>
            <td>3月</td>
            <td>1,500</td>
            <td>+22%</td>
            <td>112%</td>
        </tr>
    </tbody>
    
    <tfoot>
        <tr>
            <th>合計</th>
            <td>4,050</td>
            <td>+15%</td>
            <td>105%</td>
        </tr>
    </tfoot>
</table>

セルの結合

<table>
    <tr>
        <th rowspan="2">商品カテゴリ</th>
        <th colspan="2">2024年売上</th>
    </tr>
    <tr>
        <th>上半期</th>
        <th>下半期</th>
    </tr>
    <tr>
        <td>電子機器</td>
        <td>500万円</td>
        <td>600万円</td>
    </tr>
    <tr>
        <td>書籍</td>
        <td>200万円</td>
        <td>250万円</td>
    </tr>
</table>

5. フォーム関連タグ

基本的なフォーム構造

フォームは、ユーザーからの入力を受け取るための重要な機能です。

フォームの全体構造

<form action="/submit" method="post">
    <fieldset>
        <legend>お問い合わせフォーム</legend>
        
        <!-- フォーム要素がここに入る -->
        
        <button type="submit">送信</button>
    </fieldset>
</form>

入力タイプ別タグ

テキスト入力系

タイプ用途
text一般的なテキスト<input type="text" name="name">
emailメールアドレス<input type="email" name="email">
passwordパスワード<input type="password" name="pass">
tel電話番号<input type="tel" name="phone">
urlURL<input type="url" name="website">
search検索<input type="search" name="query">

数値・日付系

<!-- 数値入力 -->
<input type="number" name="age" min="0" max="120" step="1">

<!-- 日付入力 -->
<input type="date" name="birthday">

<!-- 時刻入力 -->
<input type="time" name="appointment">

<!-- 日時入力 -->
<input type="datetime-local" name="event-time">

<!-- 範囲選択(スライダー) -->
<input type="range" name="volume" min="0" max="100" value="50">

選択系入力

<!-- チェックボックス -->
<input type="checkbox" id="newsletter" name="newsletter" value="yes">
<label for="newsletter">メルマガを受け取る</label>

<!-- ラジオボタン -->
<fieldset>
    <legend>性別</legend>
    <input type="radio" id="male" name="gender" value="male">
    <label for="male">男性</label>
    
    <input type="radio" id="female" name="gender" value="female">
    <label for="female">女性</label>
    
    <input type="radio" id="other" name="gender" value="other">
    <label for="other">その他</label>
</fieldset>

<!-- セレクトボックス -->
<label for="prefecture">都道府県</label>
<select id="prefecture" name="prefecture">
    <option value="">選択してください</option>
    <option value="tokyo">東京都</option>
    <option value="osaka">大阪府</option>
    <option value="kyoto">京都府</option>
</select>

高度なフォーム要素

複数行テキストエリア

<label for="message">お問い合わせ内容</label>
<textarea id="message" name="message" rows="5" cols="40" placeholder="詳細をお聞かせください"></textarea>

ファイル選択

<!-- 単一ファイル -->
<input type="file" name="resume" accept=".pdf,.doc,.docx">

<!-- 複数ファイル -->
<input type="file" name="photos" multiple accept="image/*">

<!-- 画像のみ -->
<input type="file" name="avatar" accept="image/jpeg,image/png">

その他の入力タイプ

<!-- 色選択 -->
<input type="color" name="theme-color" value="#ff0000">

<!-- 隠しフィールド -->
<input type="hidden" name="csrf_token" value="abc123xyz">

完全なフォーム例

<form action="/contact" method="post" enctype="multipart/form-data">
    <fieldset>
        <legend>お問い合わせフォーム</legend>
        
        <!-- 基本情報 -->
        <div class="form-group">
            <label for="company">会社名</label>
            <input type="text" id="company" name="company">
        </div>
        
        <div class="form-group">
            <label for="name">お名前 <span class="required">*</span></label>
            <input type="text" id="name" name="name" required>
        <div class="form-group">
            <label for="email">メールアドレス <span class="required">*</span></label>
            <input type="email" id="email" name="email" required>
        </div>
        <div><div class="form-group">
            <label for="phone">電話番号</label>
            <input type="tel" id="phone" name="phone">
        </div>
    
    <!-- 選択項目 -->
    <div class="form-group">
        <label for="inquiry-type">お問い合わせ種類</label>
        <select id="inquiry-type" name="inquiry-type" required>
            <option value="">選択してください</option>
            <option value="product">製品について</option>
            <option value="service">サービスについて</option>
            <option value="support">技術サポート</option>
            <option value="other">その他</option>
        </select>
    </div>
    
    <!-- 複数選択 -->
    <fieldset>
        <legend>興味のある分野(複数選択可)</legend>
        <div class="checkbox-group">
            <input type="checkbox" id="web" name="interests" value="web">
            <label for="web">Webデザイン</label>
        </div>
        <div class="checkbox-group">
            <input type="checkbox" id="app" name="interests" value="app">
            <label for="app">アプリ開発</label>
        </div>
        <div class="checkbox-group">
            <input type="checkbox" id="marketing" name="interests" value="marketing">
            <label for="marketing">デジタルマーケティング</label>
        </div>
    </fieldset>
    
    <!-- 長文入力 -->
    <div class="form-group">
        <label for="message">詳細メッセージ</label>
        <textarea id="message" name="message" rows="6" cols="50" placeholder="具体的な内容をお聞かせください"></textarea>
    </div>
    
    <!-- ファイル添付 -->
    <div class="form-group">
        <label for="attachment">添付ファイル</label>
        <input type="file" id="attachment" name="attachment" accept=".pdf,.doc,.docx,.txt">
    </div>
    
    <!-- 送信ボタン -->
    <div class="form-buttons">
        <button type="submit">送信</button>
        <button type="reset">リセット</button>
    </div>
</fieldset>
</form> 

フォーム制御とバリデーション

必須入力とバリデーション

<!-- 必須入力 -->
<input type="text" name="username" required>

<!-- 最小・最大文字数 -->
<input type="text" name="username" minlength="3" maxlength="20">

<!-- パターン指定(正規表現) -->
<input type="text" name="zipcode" pattern="[0-9]{3}-[0-9]{4}" title="郵便番号は123-4567の形式で入力してください">

<!-- 数値の範囲 -->
<input type="number" name="age" min="18" max="65">

プレースホルダーとヒント

<input type="email" name="email" placeholder="example@domain.com">
<input type="password" name="password" placeholder="8文字以上で入力してください">

実践的なタグの使い分け

用途別タグ選択ガイド

文章構造を作るとき

<!-- 記事やブログの基本構造 -->
<article>
    <header>
        <h1>記事タイトル</h1>
        <time datetime="2024-01-15">2024年1月15日</time>
    </header>
    
    <section>
        <h2>第1章</h2>
        <p>内容...</p>
    </section>
    
    <section>
        <h2>第2章</h2>
        <p>内容...</p>
    </section>
</article>

ナビゲーションを作るとき

<!-- メインナビゲーション -->
<nav>
    <ul>
        <li><a href="/">ホーム</a></li>
        <li><a href="/about">会社概要</a></li>
        <li><a href="/services">サービス</a></li>
        <li><a href="/contact">お問い合わせ</a></li>
    </ul>
</nav>

<!-- パンくずナビゲーション -->
<nav aria-label="パンくずナビゲーション">
    <ol>
        <li><a href="/">ホーム</a></li>
        <li><a href="/category">カテゴリ</a></li>
        <li aria-current="page">現在のページ</li>
    </ol>
</nav>

商品情報を表示するとき

<section class="product">
    <h2>商品名</h2>
    <img src="product.jpg" alt="商品画像">
    
    <div class="product-info">
        <p class="price"><strong>価格: 1,980円</strong></p>
        <p class="description">商品の説明文...</p>
        
        <dl class="specifications">
            <dt>サイズ</dt>
            <dd>幅10cm × 高さ15cm</dd>
            <dt>重量</dt>
            <dd>250g</dd>
            <dt>材質</dt>
            <dd>プラスチック</dd>
        </dl>
    </div>
</section>

アクセシビリティを考慮したタグ使用

適切なラベル付け

<!-- フォーム要素には必ずラベルを -->
<label for="email">メールアドレス</label>
<input type="email" id="email" name="email">

<!-- 画像には適切なalt属性を -->
<img src="chart.png" alt="2024年売上推移グラフ">

<!-- リンクには明確なテキストを -->
<a href="/report.pdf">年次報告書(PDF、2MB)</a>

セマンティックな構造

<!-- 意味のある構造を作る -->
<main>
    <article>
        <h1>記事タイトル</h1>
        <p>記事の内容...</p>
    </article>
    
    <aside>
        <h2>関連情報</h2>
        <p>サイドバーの内容...</p>
    </aside>
</main>

まとめ

HTMLタグを効果的に使うための5つのポイント

1. 適切な分類理解

  • 文書構造タグ: ページの骨組みを作る
  • テキスト関連タグ: 内容を適切にマークアップ
  • メディア・リンクタグ: 画像や動画、リンクを配置
  • リスト・表組みタグ: 情報を整理して表示
  • フォーム関連タグ: ユーザー入力を受け付ける

2. セマンティックな使用

見た目だけでなく、意味を重視してタグを選択しましょう。

<!-- 良い例:意味が明確 -->
<article>
    <h1>記事タイトル</h1>
    <p>記事の内容</p>
</article>

<!-- 悪い例:意味が不明確 -->
<div>
    <div style="font-size: 24px; font-weight: bold;">記事タイトル</div>
    <div>記事の内容</div>
</div>

3. 階層構造の維持

見出しタグ(h1-h6)は順序を守って使用し、論理的な文書構造を作りましょう。

4. アクセシビリティの考慮

  • alt属性を適切に設定
  • label要素でフォーム要素をラベル付け
  • 適切なコントラストと読みやすさを確保

5. パフォーマンスの最適化

  • 画像にloading="lazy"を使用
  • 適切なファイル形式を選択
  • 不要なタグの削除

コメント

タイトルとURLをコピーしました