2012-09-05 18 views
58

&nbsp; ist ein Geschütztes Leerzeichen, die einen leeren Raum dar, in dem kein Zeilenumbruch auftritt.Umgang mit Geschütztes Leerzeichen: <p> </p> gegen <p></p>

Wenn ich

verwenden
<p>&nbsp;</p> 

Ich habe einen Raum zwischen zwei Passagen (größere Pause). Wenn ich verwende

Ich habe nur eine neue Linie zwischen den beiden Passage (keine Pause). Warum?

+3

Ein Teil des Problems ist, dass Sie ein leeres Absatzelement zwischen den Absätzen erstellen mögen, während der richtige Weg, um einen Abstand zu erhalten zwischen sie CSS zu verwenden ist. –

+0

Oder '
' aber da der Code von einem WYSISWG-Editor generiert wird, habe ich nicht so viel Einfluss darauf. – grabner

Antwort

65

In HTML werden Elemente, die nichts als normale Leerzeichen enthalten, als leer betrachtet. Ein Absatz, der nur ein normales Leerzeichen enthält, hat keine Höhe. Ein geschütztes Leerzeichen ist eine besondere Art von Leerzeichen, das nicht als unbedeutend betrachtet wird. Daher kann es als Inhalt für einen nicht leeren Absatz verwendet werden.

Auch wenn Sie CSS-Ränder für Absätze berücksichtigen, werden die vertikalen Ränder collapse sein, da ein "leerer" Absatz keine Höhe hat. Dies führt dazu, dass es keine Höhe und keine Ränder hat, was es so aussehen lässt, als ob es niemals dort wäre.

+0

Empty bedeutet, dass dieses Element nicht dargestellt wird? – grabner

+3

es wird dargestellt, aber es wird nicht okpy Space, da es 0 Höhe hat. –

+0

Danke für die Klarstellung! – grabner

5

Wie wäre es mit einem Workaround? In meinem Fall habe ich den Wert der Textfeld in einem jQuery variabel und verändert alle "<p>&nbsp" zu <p class="clear"> und klare Klasse bestimmte Höhe und Marge zu haben, wie das folgende Beispiel:

jQuery

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

Das Val wird dann mit dem neuen Wert in der Datenbank gespeichert.

CSS

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

Sie die Höhe & Rand, wie Sie wollen einstellen können. Und seit 'p' ist eine Anzeige: Block Element. es sollte Ihnen die erwartete Ausgabe geben.

Hoffe, dass hilft!

0

Wenn ich verstehe Ihr Problem dieses

& EMSP-den Geviert arbeiten sollte; Dies sollte ein sehr großer Raum sein, typischerweise so viel wie vier reale Räume. & ensp-der en Raum; das sollte ein etwas breiter Raum sein, ungefähr zwei normale Räume. & thinsp-das wird ein schmaler Raum sein, noch enger als ein normaler Raum.

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

+1

Ich glaube nicht, dass dies wirklich die Frage beantwortet, die gestellt wurde ... – Carpetsmoker