span タグの役割
<span> は行の中のテキストの一部を囲み、スタイルを付けたり JavaScript から見つけたりできるようにします。<div> のインライン版で、意味も初期の見た目もなく、新しい行を始めません。
文は 1 行のままで、囲んだ語句だけが変わります。
div と span の違い
2 つの目的は同じ (意味のないコンテナ) で、違うのはページ上での配置のされ方です。
div は文を 3 行に分けてページの端まで伸び、span は文の中に収まってテキストにぴったり沿います。
<div> | <span> | |
|---|---|---|
| 表示 | ブロック | インライン |
| 新しい行から始まる | はい | いいえ |
| 幅 | 利用できる幅いっぱい | 内容の幅だけ |
width、height、上下の margin | 適用される | 無視される |
| 中に入れられるもの | ブロックを含め何でも | テキストとインライン要素だけ |
| 主な用途 | セクション、カード、レイアウト用のラッパー | テキスト内の単語や語句 |
もう 1 つの違いとして、<div> は <p> の中に入れられず、入れようとするとブラウザは段落を途中で閉じます。一方 span はテキストを置ける場所ならどこにでも置けます。詳しくは div のページを参照してください。
span のスタイル: 効くものと効かないもの
色、フォント、背景、左右の padding は span にも効きます。サイズは効きません。インライン要素は width、height、上下の margin を無視します。行の中に置いたままサイズを指定するには inline-block に切り替えます。
1 つ目の span の幅は語句の分だけです。2 つ目はちょうど 120 × 40 ピクセルで、それでも文の中に収まっています。
JavaScript で span を使う
span は、カウンターやユーザー名など、スクリプトが値を入れる場所としてよく使われます。
変わるのは数字だけで、文の残りはそのままです。
span より適したタグがある場合
span には意味がないので、スクリーンリーダーはただのテキストとして読みます。語句に役割があるなら、その役割のタグを使い、好きなようにスタイルを付けましょう。
| 意味 | span の代わりに使うタグ |
|---|---|
| 重要なテキスト | <strong> |
| 強調 | <em> |
| ハイライト、印を付けたテキスト | <mark> |
| コード、ファイル名 | <code> |
| キーボードのキー | <kbd> |
| 日付や時刻 | <time datetime="2026-09-24"> |
| 別の言語のテキスト | <span lang="fr"> (span に lang 属性を付ける) |
<strong>、<b>、<em>、<i> の違いは 太字 のページで解説しています。
よくある間違い
- 普通の span に
widthを指定する。 無視されます。display: inline-blockを使いましょう。 - span の中に div や段落を入れる。 無効な HTML で、行が崩れます。外側の span を div に変えましょう。
- クリックできる span。 div と同じく、
onclickを付けた span にはキーボードで到達できません。<button>かリンクを使いましょう。 - スタイルのたびに span を使う。 段落やセクション全体にスタイルが必要なら、テキストを span で囲まずに
<p>やコンテナ自体にクラスを付けましょう。
よくある質問
HTML の span とは何ですか?
<span> は汎用のインラインコンテナです。1 つの単語など、テキストの行の一部を囲み、CSS や JavaScript から扱えるようにします。それ自体に見た目や意味はありません。
div と span の違いは何ですか?
<div> はブロックで、新しい行から始まり横幅いっぱいに広がります。<span> はインラインで、テキストの行の中に収まり、幅は内容の分だけです。内容のまとまりをグループにするには div を、テキストの中の語句に印を付けるには span を使います。
span に width が効かないのはなぜですか?
インライン要素は width、height、上下の margin を無視します。行の中に置いたままサイズを指定したいなら display: inline-block を、div と同じように扱いたいなら display: block を指定します。
HTML で 1 つの単語だけ色を変えるには?
単語をクラス付きの span で囲み、CSS で色を付けます: <span class="accent">word</span> と .accent { color: #2563eb; }。一度きりなら <span style="color: #2563eb">word</span> でも構いません。
span の中に div を入れられますか?
入れられません。span に入れられるのはテキスト、リンク、画像、他の span などのインラインの内容だけです。span の中の div もブラウザは表示しますが、無効な HTML で行が崩れるので、外側の要素を div に変えましょう。