HTMLソースコードの空白
HTMLソースコードで、テキストや画像の行、または要素inline-block
の間に空白がある場合(空白、タブ、または新しい行)、それらの間に1つの空白文字が追加されます。ページがレンダリングされます。たとえば、次のHTMLでは、4つのコンテンツのそれぞれの間に空白が表示されます。
one
two
<img src="three.png"/>
<span style="display: inline-block;">four<span>
これは、テキスト行、およびテキスト行内に表示される小さな画像やHTML要素に非常に役立ちます。inline-block
ただし、テキストの段落内にコンテンツを追加する方法としてではなく、レイアウトの目的で使用する場合は問題になります。
余分なスペースを取り除く
要素間に追加される余分な4px程度のスペースを回避するための最も安全なクロスブラウザーの方法inline-block
は、HTMLタグ間のHTMLソースコード内の空白を削除することです。
たとえば、ul
3つのフロートli
タグがある場合:
<-- No space, tabs, or line breaks between </li> and <li> -->
<ul>
<li>...</li><li>...</li><li>...</li>
</ul>
残念ながら、これはWebサイトの保守性を損ないます。コードを判読不能にするだけでなく、データの分離とフォーマットを大幅に損ないます。
別のプログラマーが後でやって来て、各li
タグをソースコードの別々の行に配置することにした場合(タグが同じ行にある理由を認識していないか、HTML Tidyを介して実行し、関連するHTMLに気付く機会さえありません)コメント)、突然、Webサイトにフォーマットのバグがあり、識別が難しい場合があります。
代わりにフローティング要素を検討してください
inline-block
空白の動作は、テキストの段落のフロー内にコンテンツを追加する以外の目的で使用することは、一般的なレイアウトの目的で使用するのは不適切である可能性があることを強く示唆しています。
inline-block
さらに、特に古いブラウザでは、コンテンツのスタイルと調整が非常に難しい場合があります。
他のソリューションの概要
- クローズタグを次のオープンタグと同じ行に、間に空白を入れずに配置します。
- HTMLコメントを使用して、閉じるタグと次の開くタグの間のすべての空白を埋めます(@Arbelが提案したように)。
- 各要素に負の左マージンを追加します(通常、フォントサイズに基づいて-3pxまたは-4px)。この特定のアプローチはお勧めしません。
font-size
コンテナ要素のを0または0.01emに設定します。これはSafari5では機能しません(それ以降のバージョンについてはわかりません)。レスポンシブデザインのWebサイト、またはfont-size
以外のユニットを使用するWebサイトに干渉する可能性がありpx
ます。
- JavaScriptまたはjQueryを使用して、コンテナーから空白のみのテキストノードを削除します。これはIE8以前では機能しません。要素間に空白しかない場合、要素間にスペースは追加されますが、これらのブラウザーではテキストノードが作成されないためです。
- コンテナ用に設定
letter-spacing
しword-spacing
ます(@PhillipWillsが提案したように)。詳細情報。これには、Webサイトのサイズを標準化する必要がありem
ますが、これはすべてのWebサイトにとって妥当なオプションではない場合があります。
text-space-collapse: discard;
コンテナに追加します(以前はと呼ばれていましたwhite-space-collapse
)。残念ながら、このCSS3スタイルはまだどのブラウザでもサポートされておらず、標準は完全には定義されていません。