ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
とは
は HTML のインライン汎用コンテナです。要素自体には意味がなく、CSS でスタイルを当てたい・JavaScript で部分操作したい時に、テキストの一部を囲むために使います。
<!-- 基本: テキストの一部だけ色を変える -->
<p>今日の気温は<span style="color:red;font-weight:bold">35度</span>です。</p>
<!-- クラス付与でスタイル分離 -->
<p>ステータス: <span class="badge badge-success">完了</span></p>
<!-- 一部だけ別言語を示す -->
<p>これは <span lang="en">Hello World</span> と表示されます。</p>
<!-- JS から参照するための ID 付与 -->
<p>カート数: <span id="cart-count">0</span></p>
vs の決定的な違い
項目
カテゴリ インライン要素 ブロック要素
改行 しない (前後に流れる) する (前後に改行)
幅・高さ指定 デフォルトでは効かない 効く
margin (上下) 効かない 効く
padding 左右は効く、上下は背景は付くが行高に影響しない 効く
子要素 インライン要素のみ (基本) 何でも入る
使い所 テキスト中の部分強調 セクション / レイアウト枠
<!-- ❌ NG: span の中にブロック要素 (HTML 仕様違反) -->
<span><div>これは仕様違反</div></span>
<!-- ✅ OK: div の中に span -->
<div><span>これは OK</span></div>
<!-- ❌ NG: span は改行しないので、ボックスにしたいなら div か display 変更 -->
<span style="width:200px;height:50px;background:red">幅は効かない</span>
<!-- ✅ OK: inline-block で span にも幅・高さを効かせる -->
<span style="display:inline-block;width:200px;height:50px;background:red">効く</span>
セマンティック要素を優先する
「意味」がある場合は で誤魔化さず、適切な HTML 要素を使うとアクセシビリティ・SEO・LLMO が向上します:
用途 非推奨 推奨
強い強調 (重要) <span class="bold"><strong>
強調 (語気) <span class="italic"><em>
マーカー (蛍光ペン) <span class="hl"><mark>
コード <span class="code"><code>
キーボード入力 — <kbd>
変数 — <var>
削除済テキスト <span style="text-decoration:line-through"><del> / <s>
追加テキスト — <ins>
略語 — <abbr title="...">
引用 — <q> (短い)、<blockquote> (長い)
時刻 — <time datetime="...">
JavaScript からの動的操作
<p>カート内: <span id="cart-count">0</span> 個</p>
<button onclick="addToCart()">追加</button>
function addToCart() {
const el = document.getElementById('cart-count');
el.textContent = parseInt(el.textContent) + 1;
el.classList.add('flash');
setTimeout(() => el.classList.remove('flash'), 500);
}
// React / Vue でも span は頻出
// React: <p>カート: <span>{count}</span> 個</p>
// Vue: <p>カート: <span>{{ count }}</span> 個</p>
display プロパティで挙動を変える
/* デフォルト: インライン */
.tag-inline { display: inline; }
/* インライン-ブロック: テキスト中に流れつつ幅・高さ指定可 */
.tag-ib {
display: inline-block;
width: 80px;
padding: 4px 8px;
background: #2563eb;
color: white;
border-radius: 4px;
text-align: center;
}
/* ブロック: div と同等 */
.tag-block {
display: block;
margin: 1em 0;
}
/* フレックス: 子要素を flex 配置 */
.tag-flex {
display: inline-flex;
align-items: center;
gap: 4px;
}
アクセシビリティ (Lighthouse / WAI-ARIA)
はデフォルトでアクセシビリティツリーに現れません。スクリーンリーダーで読み上げさせたい場合は role / aria-label 等を付与します。
<!-- ❌ アイコンだけだとスクリーンリーダーが認識できない -->
<span class="icon-trash" onclick="del()"></span>
<!-- ✅ ボタンとして認識させる -->
<button aria-label="削除" onclick="del()">
<span class="icon-trash" aria-hidden="true"></span>
</button>
<!-- ✅ 装飾用 span は aria-hidden -->
<p><span aria-hidden="true">★</span> 重要なお知らせ</p>
<!-- ✅ ステータスを通知 -->
<p>状態: <span role="status" aria-live="polite">送信中</span></p>
多言語 / 双方向テキスト:
<!-- 言語混在で双方向アルゴリズム壊れ防止 -->
<p>ユーザー名: <bdi>إيان</bdi> さんが投稿しました</p>
<!-- 強制的に方向指定 -->
<p>これは <bdo dir="rtl">逆順に表示される</bdo> 部分</p>
<!-- lang 属性で言語明示 -->
<p>英語の <span lang="en">Hello World</span> と中国語の <span lang="zh">你好</span></p>
FAQ
Q: と はどう違う?
A:
は段落 (ブロック・意味あり)、 はインライン・意味なし。文章なら 、文中の一部装飾なら 。
Q: 何個までネストして良い?
A: 仕様上の制限はなし。実用上は 3〜4 段までが可読性の限界。
Q: SEO に影響する?
A: 自体は中立。ただし を で代用すると検索エンジンが重要キーワードを認識しにくくなります。
ページの作成
親となるページを選択してください。
ページは必ず何かしらの親ページに紐づきます。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
| 項目 | ||
|---|---|---|
| カテゴリ | インライン要素 | ブロック要素 |
| 改行 | しない (前後に流れる) | する (前後に改行) |
| 幅・高さ指定 | デフォルトでは効かない | 効く |
| margin (上下) | 効かない | 効く |
| padding | 左右は効く、上下は背景は付くが行高に影響しない | 効く |
| 子要素 | インライン要素のみ (基本) | 何でも入る |
| 使い所 | テキスト中の部分強調 | セクション / レイアウト枠 |
<!-- ❌ NG: span の中にブロック要素 (HTML 仕様違反) -->
<span><div>これは仕様違反</div></span>
<!-- ✅ OK: div の中に span -->
<div><span>これは OK</span></div>
<!-- ❌ NG: span は改行しないので、ボックスにしたいなら div か display 変更 -->
<span style="width:200px;height:50px;background:red">幅は効かない</span>
<!-- ✅ OK: inline-block で span にも幅・高さを効かせる -->
<span style="display:inline-block;width:200px;height:50px;background:red">効く</span>
セマンティック要素を優先する
「意味」がある場合は で誤魔化さず、適切な HTML 要素を使うとアクセシビリティ・SEO・LLMO が向上します:
| 用途 | 非推奨 | 推奨 |
|---|---|---|
| 強い強調 (重要) | <span class="bold"> | <strong> |
| 強調 (語気) | <span class="italic"> | <em> |
| マーカー (蛍光ペン) | <span class="hl"> | <mark> |
| コード | <span class="code"> | <code> |
| キーボード入力 | — | <kbd> |
| 変数 | — | <var> |
| 削除済テキスト | <span style="text-decoration:line-through"> | <del> / <s> |
| 追加テキスト | — | <ins> |
| 略語 | — | <abbr title="..."> |
| 引用 | — | <q> (短い)、<blockquote> (長い) |
| 時刻 | — | <time datetime="..."> |
JavaScript からの動的操作
<p>カート内: <span id="cart-count">0</span> 個</p>
<button onclick="addToCart()">追加</button>function addToCart() {
const el = document.getElementById('cart-count');
el.textContent = parseInt(el.textContent) + 1;
el.classList.add('flash');
setTimeout(() => el.classList.remove('flash'), 500);
}
// React / Vue でも span は頻出
// React: <p>カート: <span>{count}</span> 個</p>
// Vue: <p>カート: <span>{{ count }}</span> 個</p>
display プロパティで挙動を変える
/* デフォルト: インライン */
.tag-inline { display: inline; }
/* インライン-ブロック: テキスト中に流れつつ幅・高さ指定可 */
.tag-ib {
display: inline-block;
width: 80px;
padding: 4px 8px;
background: #2563eb;
color: white;
border-radius: 4px;
text-align: center;
}
/* ブロック: div と同等 */
.tag-block {
display: block;
margin: 1em 0;
}
/* フレックス: 子要素を flex 配置 */
.tag-flex {
display: inline-flex;
align-items: center;
gap: 4px;
}
アクセシビリティ (Lighthouse / WAI-ARIA)
はデフォルトでアクセシビリティツリーに現れません。スクリーンリーダーで読み上げさせたい場合は role / aria-label 等を付与します。
<!-- ❌ アイコンだけだとスクリーンリーダーが認識できない -->
<span class="icon-trash" onclick="del()"></span>
<!-- ✅ ボタンとして認識させる -->
<button aria-label="削除" onclick="del()">
<span class="icon-trash" aria-hidden="true"></span>
</button>
<!-- ✅ 装飾用 span は aria-hidden -->
<p><span aria-hidden="true">★</span> 重要なお知らせ</p>
<!-- ✅ ステータスを通知 -->
<p>状態: <span role="status" aria-live="polite">送信中</span></p>
多言語 / 双方向テキスト:
<!-- 言語混在で双方向アルゴリズム壊れ防止 -->
<p>ユーザー名: <bdi>إيان</bdi> さんが投稿しました</p>
<!-- 強制的に方向指定 -->
<p>これは <bdo dir="rtl">逆順に表示される</bdo> 部分</p>
<!-- lang 属性で言語明示 -->
<p>英語の <span lang="en">Hello World</span> と中国語の <span lang="zh">你好</span></p>
FAQ
Q: と はどう違う?
A:
は段落 (ブロック・意味あり)、 はインライン・意味なし。文章なら 、文中の一部装飾なら 。 Q: 何個までネストして良い? Q: SEO に影響する? ページの作成
親となるページを選択してください。
子ページはありません
A: 仕様上の制限はなし。実用上は 3〜4 段までが可読性の限界。
A: 自体は中立。ただし を で代用すると検索エンジンが重要キーワードを認識しにくくなります。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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アノテーションとは
最近更新/作成されたページ
- Java メソッド完全ガイド — 修飾子・オーバーロード・参照 2026-06-11 07:10:02
- Java クラス完全ガイド 2026-06-11 07:10:02
- PHP 入門 — サーバーサイドスクリプト言語の概要・特徴・バージョン進化・エコシステム 2026-06-11 07:10:02
- C# 入門 — .NET エコシステムと現代の C# 言語 2026-06-11 07:10:02
- Java 文法の基礎完全ガイド — class / 変数 / 制御 / OOP / Generics / Lambda / record 2026-06-11 07:10:02
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-06-11 07:10:02
- 継承 (Inheritance) の概念と必要性完全ガイド 2026-06-11 07:10:02
- 開発環境構築完全ガイド 2026-06-11 07:10:02
- Eclipse IDE の基本(ダウンロード / JDK 設定 / プラグイン / Pleiades 日本語化 / ショートカット) 2026-06-11 07:10:02
- インターフェースとは? Java / PHP のサンプルで学ぶ目的・抽象クラスとの違い・DIP 2026-06-11 07:10:02
- Java 開発環境構築完全ガイド — JDK/IDE/Maven/Gradle (2026 年版) 2026-06-11 07:10:02
- Java データ型完全ガイド — プリミティブと参照型 2026-06-11 07:10:02
- PHP 変数完全ガイド (スコープ/参照/型変換) 2026-06-11 07:10:02
- Java 配列完全ガイド — 宣言/初期化/多次元/Arrays/Stream/ArrayList との違い 2026-06-11 07:10:02
- Java 演算子完全リファレンス 2026-06-11 07:10:02
コメントを削除してもよろしいでしょうか?
掲示板