2009-09-23 16 views
6

Quiero espacio entre mis etiquetas <p>content</p>. No antes y no después de <p> etiquetas. Fx mi código es:Haz un espacio entre el párrafo (x) html, css

<div> 
    <h1>A headline</h1> 
    <p>Some text</p> 
    <p>Some text</p> 
</div> 
Something 

No quiero espacio entre h1 yp que se hace con margen cero en h1. Pero no quiero espacio después de la última etiqueta <p>. ¿Es esto posible sin: last-child o alguna js/jQuery?

No puedo establecer class = "last" en la última etiqueta porque es un sistema CMS.

Respuesta

14
p + p { 
    margin-top: 1.5em; 
} 

(Aunque esto requiere un navegador con mejor soporte para CSS que IE6)

+2

la forma en que * debería * hacerse – annakata

+0

Bien, lo intentaré. Estoy apuntando a IE7 +, Chrome, Safari 4+, FireFox 2+ –

+0

funciona perfectamente :) gracias. –

0
<div> 
    <h1>A headline</h1> 
    <p>Some text</p> 
    <div class="paragraph-space"></div> 
    <p>Some text</p> 
</div> 

?

+0

Gracias por responder, pero no puedo controlar el texto de esa manera. (CMS) –

2

Establezca un margen inferior predeterminado para p, luego otorgue a la última etiqueta una clase sin margen inferior.

+0

IE safe way – annakata

+0

No puedo hacer eso porque el texto se representa con CMS. –

+0

OK entonces, ¿qué tal si configura margin-top en "div p" y negative margin-bottom en "div h1"? – da5id

0
<div> 
    <h1>A headline</h1> 
    <p>Some text</p> 
    <p style="margin-bottom: 0;">Some text</p> 
</div> 
+0

Gracias por responder, pero no puedo controlar el texto de esa manera. (CMS) –

4

Si usted no está obligado a apoyar IE6 que puede utilizar:

div, h1, p { margin: 0; } 
p + p { margin-top: 12px; } 

Si Necesito soportar IE6, este es un truco sucio pero funciona sin Javascript:

div, h1, p { margin: 0; } 
h1 { margin-bottom: -12px; } 
p { margin-top: 12px; } 

La desventaja de este método es que no se puede usar, por ejemplo, 1em para los márgenes de balanceo ya que tienen diferentes tamaños de fuente. Puede ajustar manualmente según sea necesario o usar anchuras de píxeles.

+0

Pero el problema con el último método es que si tengo una lista después de la h1, flotan entre sí. Iré con IE7 +. –

+0

Si puede ir con IE7 +, entonces está ordenado. Solo estoy señalando esto para que esté completo porque muchos necesitan soportar IE6 aún (tristemente). – cletus

+0

Además, vale la pena señalar que no recomendaría hacer esto para todos los divs. Asignaría una clase para poner en el div donde quieras hacer esto, donde conozcas el formato de los contenidos para evitar la situación que mencionas. El mismo encabezado seguido por el problema de la lista tiene el mismo problema con el uso del selector +. – cletus

0

Si desea hacerlo más compatible en el navegador, también se puede utilizar:

p { margin-top: 24px; } 
h1 { margin-bottom: -24px; } // play with this value as necessary 

márgenes negativos se tire de los elementos hacia ellos. Es más complicado de lo que me gusta, pero cuando estás a merced del código generado por CMS sin forma de agregar clases, debes ser creativo.

+0

Sí, cletus también mostró esto, pero gracias. –

Cuestiones relacionadas