2009-09-23 4 views
6

Мне нужно место между моими <p>content</p> тегами. Не раньше и не после <p> тегов. Fx мой код:Сделайте пробел между абзацем (x) html, css

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

Мне не нужно пространство между h1 и p, которое выполняется с нулевым пределом на h1. Но я не хочу места после последнего тега <p>. Это возможно без: last-child или js/jQuery?

Я не могу установить class = "last" в последнем теге, потому что это система CMS.

ответ

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

(Хотя это требует браузер с улучшенной поддержкой CSS, чем IE6)

+2

способ, которым он должен быть сделан – annakata

+0

Приятно, я попробую. Я нацелен на IE7 +, Chrome, Safari 4+, FireFox 2+ –

+0

работает отлично :) спасибо. –

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

?

+0

Спасибо за ответ, но я не могу управлять текстом таким образом. (CMS) –

2

Установите нижний предел по умолчанию на p, а затем дайте последнему тегу класс без нижнего поля.

+0

IE безопасный путь – annakata

+0

Я не могу этого сделать, потому что текст визуализируется с помощью CMS. –

+0

Итак, как насчет настройки margin-top на «div p» и отрицательный край-край на «div h1»? – da5id

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

Спасибо за ответ, но я не могу контролировать текст таким образом. (CMS) –

4

Если вы не обязаны поддерживать IE6, вы можете использовать:

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

Если вы необходимо поддерживать IE6, это грязный хак, но он работает без Javascript:

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

Недостатком этого метода является то, что вы не можете просто использовать, скажем, 1em для балансировочных полей, поскольку они имеют разные размеры шрифта. Вы можете вручную отрегулировать по необходимости или использовать ширину пикселей.

+0

Но проблема с последним методом заключается в том, что если у меня есть список после h1, тогда они будут плавать в eachother. Я поеду с IE7 +. –

+0

Если вы можете пойти с IE7 +, то вы отсортированы. Я просто указываю на полноту, потому что многим нужно поддерживать IE6 все еще (к сожалению). – cletus

+0

Кроме того, стоит отметить, что я бы не предложил делать это для всех div. Я бы связал класс, чтобы надеть div, где вы хотите сделать это, где вы знаете формат содержимого, чтобы избежать ситуации, о которой вы говорите. Тот же заголовок, за которым следует проблема с списком, имеет ту же проблему с использованием селектора +. – cletus

0

Если вы хотите сделать его более совместимый браузер, вы также можете использовать:

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

Отрицательные поля будут тянуть элементы к ним. Это беспорядочно, чем мне нравится, но когда вы находитесь на милости CMS сгенерированного кода без возможности добавления классов, вы должны быть творческими.

+0

Да, cletus также показал это, но спасибо. –

Смежные вопросы