<!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">
<div>意味を持たない汎用の「箱」。レイアウトやCSSでのグループ化のために使う、最も基本的なタグ。
<div class="card">
<p>この中身をまとめて1つの箱として扱える</p>
</div>
💡 意味的なタグ(section/article/nav等)が使える場面ではそちらを優先し、divは「他に適切なタグがない時」に使う。
<span>意味を持たない汎用のインライン要素。文章の一部分だけにCSSを当てたい時に使う。
これはspan で色を変えた部分です。
<p>これは<span class="highlight">強調したい単語</span>です。</p>
💡 divとの違いは「改行されるかどうか」。divはブロック(前後で改行)、spanはインライン(文章の流れの中に収まる)。
class属性要素に「グループ名」を付ける属性。同じclassを複数の要素に付けられ、CSSやJSでまとめて扱える。
<p class="warning">注意文1</p>
<p class="warning">注意文2</p>
<style>
.warning { color: red; }
</style>
💡 半角スペース区切りで複数指定できる(class="card large")。
id属性ページ内で唯一の名前を付ける属性。1ページ内で同じidは重複させない。ページ内リンクの飛び先やJSからの1要素指定に使う。
<h2 id="contact">お問い合わせ</h2>
<a href="#contact">お問い合わせへ</a>
💡 classとの使い分け:「複数の要素に共通のスタイル」→class、「ページ内で1つだけの特定要素」→id。
<!-- -->ブラウザには表示されない、コード上のメモ書き。
<!-- ここはヘッダー部分 -->
<header>...</header>
<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>
<small> / <mark>smallは注釈・免責事項などの補足的な小さい文字、markは蛍光ペンのようなハイライト。
通常価格 1,000円 (税込)
<p>通常価格 <mark>1,000円</mark> <small>(税込)</small></p>
<sub> / <sup>下付き文字・上付き文字。化学式や数式、脚注番号などに使う。
H2O、x2
H<sub>2</sub>O
x<sup>2</sup>
<del> / <ins>削除された内容(取り消し線)・追加された内容(下線)を示す。価格改定の表示などに便利。
2,000円 1,500円
<del>2,000円</del> <ins>1,500円</ins>
<abbr>略語を表す。title属性に正式名称を書くと、マウスホバーで表示される。
HTML(カーソルを乗せてみてください)
<abbr title="HyperText Markup Language">HTML</abbr>
style属性要素に直接CSSを書ける属性。色・サイズ・太さなど見た目の変更は基本的にこの中に書く。
style属性で装飾したテキスト
<p style="color: #ff6b6b; font-size: 1.3em;">
文字
</p>
💡 少量ならstyle属性で手軽に。装飾が増えてきたら<link>で読み込む外部CSSファイルに分離するのが基本。
colorプロパティで文字色を指定する。色名・#rrggbb・rgb()などで指定できる。
red #3b82f6 rgb(34,197,94)
<span style="color: red;">赤い文字</span>
<span style="color: #3b82f6;">青い文字</span>
font-sizeプロパティで文字サイズを指定する。px(固定)やem(相対)などの単位を使う。
<p style="font-size: 24px;">24pxの文字</p>
<p style="font-size: 1.5em;">親の1.5倍の文字</p>
<b> / font-weight太字にする方法は2通り。<b>タグは見た目だけの太字、font-weightはCSSでの指定。
bタグで太字 font-weightで太字
<b>太字</b>
<span style="font-weight: bold;">太字</span>
💡 「重要」という意味を持たせたいなら<strong>(テキスト系カテゴリ参照)、単に見た目だけ太くしたいなら<b>やCSSを使う。
<i> / font-style斜体にする方法も2通り。<i>タグは見た目だけの斜体、font-styleはCSSでの指定。
iタグで斜体 font-styleで斜体
<i>斜体</i>
<span style="font-style: italic;">斜体</span>
💡 「強勢」という意味を持たせたいなら<em>(テキスト系カテゴリ参照)、単に見た目だけ斜めにしたいなら<i>やCSSを使う。
<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>
<picture>画面幅や対応フォーマットに応じて、複数の画像候補から最適なものをブラウザに選ばせる。
<picture>
<source media="(max-width: 600px)" srcset="small.jpg">
<img src="large.jpg" alt="説明">
</picture>
<iframe>別のページ(YouTube動画やGoogleマップなど)をページ内に埋め込む。
<iframe src="https://example.com/embed" width="560" height="315" loading="lazy"></iframe>
⚠️ 信頼できないサイトを埋め込むとセキュリティリスクになる。埋め込み元は必ず確認する。
<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"を明示。
type="checkbox"は複数選択可、type="radio"は同じname内で1つだけ選択可。
<label><input type="checkbox" name="agree"> 同意する</label>
<label><input type="radio" name="plan" value="a"> プランA</label>
<label><input type="radio" name="plan" value="b"> プランB</label>
💡 ラジオボタンは同じグループ内でnameを必ず揃える。揃っていないと個別に選択できてしまう。
用途に応じたUIをブラウザが自動で提供してくれる。日付選択・スライダー・色選択・ファイル選択・パスワードなど。
<input type="date">
<input type="range" min="0" max="100">
<input type="color">
<input type="file">
<input type="password">
<fieldset><legend>関連する入力項目をグループ化し、legendでグループの見出しを付ける。
<fieldset>
<legend>お届け先情報</legend>
<label>郵便番号 <input type="text"></label>
</fieldset>
<progress> / <meter>progressは作業の進捗、meterは決まった範囲内の測定値(残り容量など)を表す。
<progress value="70" max="100"></progress>
<meter value="0.6" min="0" max="1"></meter>
<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>
HTMLとして特別な意味を持つ文字(< > &)や、半角スペースを保持したい時は、専用の記法に置き換える。
< → <
> → >
& → &
→ 半角スペース(詰められない空白)
⚠️ ユーザー入力をそのままHTMLに埋め込むと、この変換漏れがXSS(クロスサイトスクリプティング)の原因になる。
迷ったら「複数の要素に同じスタイルを当てたい」→class、「ページ内でその1箇所だけを指し示したい」→idで判断する。
<!-- 複数のカードに共通スタイル -->
<div class="card">...</div>
<div class="card">...</div>
<!-- ページ内で唯一のヘッダー -->
<div id="site-header">...</div>
該当するタグが見つかりませんでした。