2009-09-23 12 views
6

Ich möchte Abstand zwischen meinen <p>content</p> Tags. Nicht vorher und nicht nach <p> Tags. Fx mein Code ist:Machen Sie einen Abstand zwischen Absatz (x) html, css

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

Ich will keinen Raum zwischen h1 und p, die mit Null Rand auf h1 getan wird. Aber ich will keinen Platz nach dem letzten <p> Tag. Ist das möglich ohne: last-kind oder js/jQuery?

Ich kann nicht Klasse "letzte" auf dem letzten Tag festlegen, da es ein CMS-System ist.

Antwort

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

(Obwohl dies einen Browser für CSS als IE6 mit besserer Unterstützung erfordert)

+2

wie es * sollte * getan werden – annakata

+0

Schön, ich werde das versuchen. Ich ziele auf IE7 +, Chrome, Safari 4+, FireFox 2+ –

+0

funktioniert perfekt :) danke. –

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

?

+0

Danke für die Antwort, aber ich kann den Text so nicht kontrollieren. (CMS) –

2

Legen Sie einen Standard-unteren Rand auf p fest, und geben Sie dem letzten Tag eine Klasse ohne unteren Rand.

+0

der IE sicher Weg – annakata

+0

Ich kann das nicht tun, weil der Text mit CMS gerendert wird. –

+0

OK, wie wäre es mit Margin-Top zu "div p" und negative margin-bottom zu "div h1"? – da5id

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

Danke für die Antwort, aber ich kann den Text nicht so kontrollieren. (CMS) –

4

Wenn Sie IE6 nicht erforderlich sind unterstützen Sie verwenden können:

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

Wenn Sie muss IE6 unterstützen, das ist ein dreckiger Hack, aber es funktioniert ohne Javascript:

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

Der Nachteil dieser Methode ist, dass Sie, sagen wir einmal, 1em für die Ausgleichsränder nicht verwenden können, da sie unterschiedliche Schriftgrößen haben. Sie können entweder manuell nach Bedarf anpassen oder Pixelbreiten verwenden.

+0

Aber das Problem mit der letzten Methode ist, dass wenn ich eine Liste nach dem h1 habe, dann werden sie ineinander gleiten. Ich werde mit IE7 + gehen. –

+0

Wenn Sie mit IE7 + gehen können, dann sind Sie sortiert. Ich weise dies nur auf Vollständigkeit hin, da viele den IE6 immer noch (leider) unterstützen müssen. – cletus

+0

Es ist auch erwähnenswert, dass ich nicht vorschlagen würde, dies für alle Divs zu tun. Ich würde eine Klasse zuordnen, um das Div, wo Sie dies tun möchten, wo Sie das Format des Inhalts kennen, um die Situation zu vermeiden, wie Sie erwähnen. Die gleiche Überschrift, gefolgt von einem Listenproblem, hat das gleiche Problem bei der Verwendung des Selektors +. – cletus

0

Wenn Sie es mehr Browser kompatibel machen möchten, können Sie auch:

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

Negative Margen Elemente auf sie ziehen wird. Es ist unordentlicher, als ich es mag, aber wenn Sie dem CMS-generierten Code ausgeliefert werden, der keine Möglichkeit zum Hinzufügen von Klassen bietet, müssen Sie kreativ sein.

+0

Ja, das hat auch gezeigt, aber danke. –

Verwandte Themen