:afterを使用して要素の後にスペース(「」)を追加します


274

一部のコンテンツの後に空白を追加したいのですが、content: " ";うまくいきません。

これは私のコードです:

h2:after {
    content: " ";
}

...これは機能しませんが、これは機能します:

h2:after {
    content: "-";
}

何が悪いのですか?


2
期待される結果がわかりません。あなたは、追加しようとしているpadding使用しますcontent。スペースが追加されたかどうかはわかりません。
fncomp 2011年

2
これは奇妙な質問です。スペースを追加するためにパディングを使用してください。content :afterは使用しないでください。display:inlineとdisplay:blockの違いを知らないのでしょうか。
Littlemad

コンテンツを介してパディングを追加しようとしています。
bradley.ayers 2011年

2
この方法を使用してスペースを追加するoverflow: hiddenと、ブロック要素がイタリックテキストの最後の文字の最後の数ピクセルを切り取るときにも役立つことがわかりました。この場合、パディングは役に立ちません。
ジョーウォーラー

3
スペースを使用してスペースに下線を付けたい場合、パディングは役に立ちませんtext-decoration: underline;
dmitry_romanov 2014年

回答:


142

説明

あなたのコードがスペースを挿入することは注目に値します

h2::after {
  content: " ";
}

ただし、すぐに削除されます。

匿名インラインボックスから、

'white-space'プロパティに従って後で折りたたまれる空白のコンテンツは、匿名のインラインボックスを生成しません。

そして、「ホワイトスペース」処理モデルから、

行末のスペース(U + 0020)で「空白」が「通常」、「nowrap」、または「行前」に設定されている場合は、それも削除されます。

解決

そのため、スペースを削除したくない場合は、またはに設定white-spaceします。prepre-wrap

h2 {
  text-decoration: underline;
}
h2.space::after {
  content: " ";
  white-space: pre;
}
<h2>I don't have space:</h2>
<h2 class="space">I have space:</h2>

改行しないスペース(U + 00a0)は使用しないでください。単語間の改行を防ぐことになっています。それらは、意味論的ではない、折りたたみできないスペースとして使用することは想定されていません。


3
white-spaceiE11でもEdgeでもサポートされていないようです(caniuse.com/#search=white-spaceを参照)。したがって、ユーザーbradley.ayersによる回答の方が優れていますか?(わかりません。セマンティクスや改行動作など、他の側面もあります)
chimos '23

561

エスケープされたユニコードを介して指定する必要があることがわかりました。この質問は関連しており、答えが含まれています。

ソリューション:

h2:after {
    content: "\00a0";
}

64
これにより非破壊的なスペースが追加されることはありません。通常のスペースが必要な場合は、「\ 00A0」ではなく「\ 0020」が必要です。
Offlein 2014年

4
また、通常のスペースを追加しても何も起こらないことにも注意してください。このテキストと前の要素の間に空白がない場合、空白は追加されません。通常の空間はそれ自体に崩壊します。
mheim 2015

2
@Offleinは、一部のフォント、たとえばFont Awesome \00A0ではスペースを表示できず、パディングを使用できない前または後ではなく要素間にスペースが必要な場合は、別の回答として `\ 0020`を追加してください
Mousey

コンテンツに既にあるものの後にスペースを追加するにはどうすればよいですか?
vsync '20年

2
@FrançoisDupont、この変更を説明するリソースはありますか?
isherwood 2018

9

インラインブロックコンテナーを使用して一連の個々のイベントをワークフロータイムラインに表示するため、パディングを使用する代わりにこれが必要でした。タイムラインの最後のイベントの後に矢印は必要ありません。

最終的に次のようなものになりました:

.transaction-tile:after {
  content: "\f105";
}

.transaction-tile:last-child:after {
  content: "\00a0";
}

gt(シェブロン)文字にfontawesomeを使用しました。何らかの理由で「コンテンツ:なし」。最後のタイルで配置の問題が発生していました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.