2012-09-05 18 views
58

&nbsp; es un espacio duro, que representa un espacio vacío donde no se produce ningún salto de línea.Manipulación de espacio duro: <p> </p> vs. <p></p>

Si uso

<p>&nbsp;</p> 

I tienen un espacio entre dos pasajes (rotura más grande). Si uso

<p> </p> 

Solo tengo una nueva línea entre los dos pasajes (sin interrupción). ¿Por qué?

+3

Parte del problema es que desea crear un elemento párrafo vacío entre párrafos, mientras que la forma correcta de obtener una separación entre ellas es el uso de CSS. –

+0

O '
' pero dado que el código se genera a partir de un editor WYSISWG, no tengo tanta influencia en él. – grabner

Respuesta

65

En HTML, los elementos que contienen solo caracteres en blanco y negro se consideran vacíos. Un párrafo que contiene solo un carácter de espacio normal tendrá altura cero. Un espacio no disruptivo es un tipo especial de carácter de espacio en blanco que no se considera insignificante, por lo que puede utilizarse como contenido para un párrafo no vacío.

Incluso si considera los márgenes de CSS en los párrafos, ya que un párrafo "vacío" tiene una altura cero, sus márgenes verticales serán collapse. Esto hace que no tenga altura ni márgenes, por lo que parece que nunca estuvo allí.

+0

Vacío significa que este elemento no se representará? – grabner

+3

se representará, pero no ocupar espacio, ya que tiene 0 de altura. –

+0

¡Gracias por aclarar! – grabner

5

¿Qué tal una solución? En mi caso me tomó el valor del área de texto en una variable jQuery, y cambió todo "<p>&nbsp" a <p class="clear"> y de clase clara de tener cierta altura y el margen, como el siguiente ejemplo:

jQuery

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

El valor se guarda luego en la base de datos con el nuevo valor.

CSS

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

Se puede ajustar el margen de altura & como desee. Y dado que 'p' es una pantalla : bloque elemento. debería darle el resultado esperado.

Espero que ayude!

0

Si entiendo su problema de esto debería funcionar

& EMSP-em el espacio; este debería ser un espacio muy amplio, típicamente hasta cuatro espacios reales. & ensp-the en space; esto debería ser un espacio algo amplio, aproximadamente dos espacios regulares. & thinsp: este será un espacio angosto, incluso más estrecho que un espacio normal.

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

+1

No creo que esto realmente responda la pregunta que se hizo ... – Carpetsmoker