1.ホワイトスペースとは
ホワイトスペースを
訳すと、
空白となります。
「ホワイトスペースは HTML、 CSS、そして DOM 内でどう扱われるか - Web API | MDN」ホワイト
スペース とは ホワイトスペースとは、スペース、タブ、改行 (正確には、CRLF シーケンス、キャリッジリターン、改行) のみで構成されたテキストの文字列のことです。これらの文字を使用することで、自分や他の人が読みやすいようにコードを整形することができます。 実際、私たちのソースコードの多くはこれらのホワイトスペースであふれており、コードのダウンロードサイズを減らすために、本番のビルド段階でホワイトスペースを取り除く傾向があります。
2.HTMLでのホワイトスペースの扱い
HTMLでは、
ホワイトスペースは
ほとんど無視されます。
HTMLでの改行コードの扱い
<div>
a
b
<span>c</span
><span>d</span>
<span>e</span>
f
</div>
改行コードは、空白として扱われます。
段落の最初と最後の空白は無視されるので、実質的には段落の最初と最後の改行コードは無視されます。
4行目の改行コードはタグの中なので、ここが空白として扱われても改行として扱われても何も影響はありません。 というより、自分自身の前後に改行を生成しない要素の直後に改行コードがあると空白として扱われてしまうので、意図的にタグの中に改行コードを収める記述が必要な場合があります。
例示では、文字列の範囲(空白の有無)を視覚化する為に、CSSで文字に下線を装飾しています。
HTMLでの空白の扱い
<div> a b c d </div>
段落の最初と最後の空白は無視されます。段落中の2つ以上の連続する空白は1つにまとめられます。このまとめる対象は、改行コードから空白として扱われる分を含みます。
例示では、文字列の範囲(空白の有無)を視覚化する為に、CSSで文字に下線を装飾しています。
3.対応
整形済みテキスト要素
<pre>
a
b
<div> c d </div>
efg hijkl mn
</pre>
pre
pre要素
pre
例示では、文字列の範囲(空白の有無)を視覚化する為に、CSSで文字に下線を装飾しています。
(※ pre
pre
a bc defg hijkl mn
改行要素
a<div><br>
b
c<br>
d<br>
</div>e
br
4行目の最初の空白は、 (論理的に) 段落の最初となるので無視されます。改行は、その後の (論理的な) 段落が空なので無視されます。
br
b c
d
CSS
white-space: normal;
white-spacenormal
に指定しました。
white-space: nowrap;
white-spacenowrap
に指定しました。
white-space: pre;
white-spacepre
に指定しました。
white-space: pre-wrap;
white-spacepre-wrap
に指定しました。
white-space: pre-line;
white-spacepre-line
に指定しました。
white-space: break-spaces;
white-spacebreak-spaces
に指定しました。pre-wrap
と同じです。
文字参照
<div>
abcdefghij<br>
abc e ij<br>
abc e
ij<br> abc e
      ij<br> </div>
"
"と文字 
"と数字
abc e ij
abc e ij
abc e ij
おまけ
<div class=
"XHSample47301"> <ul>
<li>01</li>
<li>02</li>
<li>03</li>
</ul>
</div>
.XHSample47301 ul {
font-family: monospace, monospace;
list-style-type: none;
padding-left: 0;
}
.XHSample47301 li {
display: inline;
color: #fff;
background-color: #000;
}
ブロックレベルボックスに対してdisplay: inline;
を指定して横並びにする事がありますが、
- 01
- 02
- 03
<div class=
"XHSample47302"> <ul>
<li>01</li>
<li>02</li>
<li>03</li>
</ul>
</div>
.XHSample47302 ul {
font-family: monospace, monospace;
list-style-type: none;
padding-left: 0;
letter-spacing: -1em;
}
.XHSample47302 li {
display: inline;
color: #fff;
background-color: #000;
letter-spacing: normal;
}
改行コードが空白として扱われる対応として、letter-spacing: -1em;
で字間のスペースを1文字分減らしています。
- 01
- 02
- 03
4.気を付ける点
改行コードの扱い
改行コードは、無視されたり空白として1つの空白にまとめられたりと状況により扱いが違うので注意が必要です。
全角空白
全角空白は、半角の空白とは異なりまとめられる事はありません。それでいて半角, 全角の見分けが難しいです。
タブ
タブは、エディタなどであらかじめ設定しておいた位置にカーソルを移動する機能です。空白で埋める物と、制御コードを用いる物があります。
空白で埋める場合は空白として認識していれば良いのですが、制御コードを用いる物はソースと描画の違いの認識が要注意だと思います。