web-dev-qa-db-ja.com

改行なしスペースの処理:<p>&nbsp; </p>と<p> </p>

&nbsp;は改行なしのスペースで、改行が行われない空のスペースを表します。

私が使うなら

<p>&nbsp;</p>

私は2つの通路の間にスペースがあります(より大きな休憩)。私が使うなら

<p> </p>

私は2つの通路の間に新しい行しかありません(休憩なし)。どうして?

62
grabner

HTMLでは、通常の空白文字以外に何も含まれていない要素は空と見なされます。通常の空白文字だけを含む段落は、高さがゼロになります。改行なしスペースは、意味がないとは見なされない特別な種類の空白文字なので、空でない段落のコンテンツとして使用できます。

段落のCSS余白を考慮しても、「空の」段落は高さがゼロなので、縦方向の余白は 折りたたみ になります。これにより、高さや余白がなくなり、まったく存在しないように見えます。

68
BoltClock

回避策はどうですか。私の場合は、jQuery変数のtextareaの値を取り、次の例のように、"<p>&nbsp"をすべて<p class="clear">に変更し、特定の高さとマージンを持つようにクラスをクリアします。

jQuery

tinyMCE.triggerSave();
var val = $('textarea').val();
val = val.replace(/<p>&nbsp/g, '<p class="clear">');

その後、valは新しいvalとともにデータベースに保存されます。

CSS

p.clear{height: 2px; margin-bottom: 3px;}

あなたは望むように高さと余白を調整することができます。そして 'p'はdisplay:block要素なので。期待通りの出力が得られるはずです。

それが役立つことを願っています!

5
Roshdy

私はあなたの問題を理解していればこれはうまくいくはずです

&emsp— emスペース。これは非常に広いスペース、通常は4つの実スペースと同じです。 &ensp—エンスペース。これはやや広いスペース、大体2つの通常スペースにする必要があります。 &thinsp - これは狭いスペースになり、通常のスペースよりもさらに狭くなります。

出典: http://hea-www.harvard.edu/~fine/Tech/html-sentences.html

0
user5181462