<!DOCTYPE html>
宣言HTML5であることを宣言する。ファイルの一番先頭に1回だけ書く。
<!DOCTYPE html>
<html lang="ja">
...
</html>
💡 これがないとブラウザが「互換モード」で解釈し、CSSのレイアウトが崩れることがある。
よく使うHTMLタグを、実例・コード・ひとことメモつきでまとめた個人用リファレンスです。検索ボックスでタグ名や関連ワードから絞り込めます。
<!DOCTYPE html>HTML5であることを宣言する。ファイルの一番先頭に1回だけ書く。
<!DOCTYPE html>
<html lang="ja">
...
</html>
💡 これがないとブラウザが「互換モード」で解釈し、CSSのレイアウトが崩れることがある。
<meta>文字コードやビューポートなど、ページのメタ情報を指定する。
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
💡 viewportを忘れるとスマホでページが縮小表示され、レスポンシブCSSが効かない。
<title>ブラウザタブや検索結果に表示されるページタイトル。1ページに1つ。
<title>ページのタイトル</title>
<link>外部CSSファイルやfaviconなど、外部リソースを読み込む。
<link rel="stylesheet" href="css/style.css">
<link rel="icon" href="favicon.ico">
<h1>〜<h6>見出し。数字が小さいほど重要度が高い。1ページにh1は基本1つ。
<h1>ページの主題</h1>
<h2>セクション見出し</h2>
💡 見た目の大きさではなく文書構造として使う。装飾目的でスキップするのはNG。
<p>段落。テキストのまとまりを表す最も基本的なタグ。
<p>段落のテキストです。</p>
<strong> / <em>strongは重要性の強調(太字表示)、emは強勢の強調(斜体表示)。
これはstrongで強調、これはemで強調。
<strong>重要な部分</strong>
<em>強調したい部分</em>
💡 <b>や<i>は見た目だけの変更。意味を持たせたいなら strong/em を使う。
<br> / <hr>brは改行、hrは話題の区切りを表す水平線。
1行目<br>2行目
<hr>
💡 brをレイアウト調整(余白づくり)に多用するのはCSS的にNG。marginを使う。
<blockquote>他ソースからの引用ブロック。cite属性で出典URLを示せる。
<blockquote cite="https://example.com">
引用文
</blockquote>
<pre><code>改行やスペースをそのまま表示する整形済みテキスト。コード掲載の定番。
<pre><code>
function hello() {
console.log("hi");
}
</code></pre>
<ul><li>順序を問わない箇条書きリスト。
<ul>
<li>りんご</li>
<li>みかん</li>
</ul>
<ol><li>順序が意味を持つ番号付きリスト。startやtype属性で番号を調整できる。
<ol start="1">
<li>手順1</li>
<li>手順2</li>
</ol>
<dl><dt><dd>用語(dt)とその説明(dd)を対にした定義リスト。用語集などに便利。
<dl>
<dt>HTML</dt>
<dd>ページの構造を作る言語</dd>
</dl>
<img>画像を埋め込む。alt属性は必須(アクセシビリティ・SEO対策)。
<img src="photo.jpg" alt="説明文" width="200">
💡 装飾目的だけの画像はalt=""(空)にして読み上げをスキップさせる。
<figure><figcaption>画像や図とそのキャプションをセットで意味づける。
<figure>
<img src="chart.png" alt="売上グラフ">
<figcaption>2026年の売上推移</figcaption>
</figure>
<video>動画を埋め込む。controlsで再生UIを表示。
<video src="movie.mp4" controls width="320"></video>
<audio>音声ファイルを埋め込む。
<audio src="sound.mp3" controls></audio>
<table>表組み。見出しセルはth、データセルはtd。
| 名前 | 点数 |
|---|---|
| 太郎 | 80 |
<table>
<thead>
<tr><th>名前</th><th>点数</th></tr>
</thead>
<tbody>
<tr><td>太郎</td><td>80</td></tr>
</tbody>
</table>
colspan / rowspanセルを横方向・縦方向に結合する。
<td colspan="2">横に2セル分結合</td>
<td rowspan="2">縦に2セル分結合</td>
<form>ユーザー入力を送信するためのコンテナ。
<form action="/submit" method="post">
...
</form>
<input>type属性で入力形式を切り替える。スマホでは適切なキーボードが自動選択される。
<input type="email" name="email" required>
<input type="number" min="0" max="10">
<label>for属性を入力欄のidと一致させると、ラベルクリックでも入力欄にフォーカスできる。
<label for="name">お名前</label>
<input id="name" type="text">
💡 labelを省略するとスクリーンリーダー利用者が入力欄の目的を理解できない。
<textarea> / <select> / <button>複数行入力・選択肢・送信ボタン。
<textarea rows="4"></textarea>
<select>
<option value="a">A</option>
</select>
<button type="submit">送信</button>
💡 buttonはtype省略時submit扱い。フォーム外で使うならtype="button"を明示。
<header> / <footer>ページやセクションの冒頭・末尾の情報を表す。
<header><h1>サイト名</h1></header>
<footer>© 2026</footer>
<main>ページの主要コンテンツ。1ページに1つだけ使う。
<main>
<!-- ページの主内容 -->
</main>
<section> / <article>sectionは意味のある区切り、articleは単体で完結する独立コンテンツ(ブログ記事など)。
<article>
<h2>記事タイトル</h2>
<p>本文...</p>
</article>
<aside>本文からは独立した補足情報(サイドバー、広告、関連リンクなど)。
<aside>
<p>関連リンク</p>
</aside>
<details><summary>JavaScriptなしで開閉できるアコーディオンUIを作れる。
中身のテキスト
<details>
<summary>クリックして開く</summary>
<p>中身のテキスト</p>
</details>
<dialog>モーダルダイアログをネイティブに実現。showModal()で表示。
<dialog id="d">内容</dialog>
<script>
document.getElementById('d').showModal();
</script>
<template>パース済みだが描画されないHTML片。JSで複製して動的に挿入する用途。
<template id="row">
<li class="item"></li>
</template>
スマホで正しく表示するにはwidth=device-widthが必須。忘れるとPC向けレイアウトのまま縮小表示される。
<meta name="viewport" content="width=device-width, initial-scale=1.0">
ファイルを用意しなくても、SVGをdata URIで直接埋め込める(このサイトのタブアイコンも同じ手法)。
<link rel="icon" href="favicon.ico">
SNSでシェアされたときのカード表示をコントロールする。
<meta property="og:title" content="ページタイトル">
<meta property="og:description" content="説明文">
<meta property="og:image" content="https://example.com/ogp.png">
画面幅や解像度に応じて最適な画像を読み込ませ、転送量を節約する。
<img src="s.jpg"
srcset="s.jpg 480w, m.jpg 800w, l.jpg 1200w"
sizes="(max-width: 600px) 100vw, 800px"
alt="説明">
data-*属性要素に独自データを持たせる標準的な方法。JSからはdatasetで読める。
<li data-id="42" data-status="done">タスク</li>
<script>
el.dataset.id; // "42"
el.dataset.status; // "done"
</script>
アイコンだけのボタンにはaria-labelで読み上げテキストを補う。
<button aria-label="閉じる">✕</button>
該当するタグが見つかりませんでした。