在(x)段和html、css之间留出空格

在(x)段和html、css之间留出空格,html,xhtml,space,paragraph,Html,Xhtml,Space,Paragraph,我想在我的内容标记之间留出空间。不在标签之前和之后。我的代码是: <div> <h1>A headline</h1> <p>Some text</p> <p>Some text</p> </div> Something 标题 一些文本 一些文本 某物 我不想要h1和p之间的空间,这是在h1上用零余量完成的。但是我不想在最后一个标记后面留空格。如果没有:last child或一些

我想在我的
内容

标记之间留出空间。不在标签之前和之后。我的代码是:

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

标题
一些文本

一些文本

某物
我不想要h1和p之间的空间,这是在h1上用零余量完成的。但是我不想在最后一个
标记后面留空格。如果没有:last child或一些js/jQuery,这可能吗

我无法在最后一个标记上设置class=“last”,因为它是CMS系统。


<div>
   <h1>A headline</h1>
   <p>Some text</p>
   <div class="paragraph-space"></div>
   <p>Some text</p>
</div>
标题 一些文本

一些文本


将默认底部边距设置为p,然后为最后一个标记指定一个没有底部边距的类

p + p {
  margin-top: 1.5em;
} 
(尽管这需要比IE6更支持CSS的浏览器)


标题
一些文本

一些文本


如果您不需要支持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作为平衡页边距,因为它们具有不同的字体大小。您可以根据需要手动调整或使用像素宽度。

如果要使其更兼容浏览器,还可以使用:

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

负边距会将元素拉向它们。这比我喜欢的更混乱,但是当你任由CMS生成的代码摆布而无法添加类时,你必须要有创造性。

我不能这样做,因为文本是用CMS呈现的。好吧,那么,将页边距顶部设置为“div p”,将负页边距底部设置为“div h1”如何?我还没有测试过它,但使用p+p的cletus解决方案对IE7+来说效果很好。那就行了。。。我希望;)谢谢:)太好了,我试试看。我的目标是IE7+、Chrome、Safari 4+、FireFox 2+,谢谢你的回复,但我无法用那种方式控制文本。(CMS)谢谢你的回复,但我不能用那种方式控制文本。(CMS)但最后一种方法的问题是,如果我在h1之后有一个列表,那么它们将互相浮动。我将使用IE7+。如果您可以使用IE7+,那么您将被排序。我只是为了完整性而指出这一点,因为很多人仍然需要支持IE6(遗憾的是)。此外,值得指出的是,我不建议对所有div都这样做。我会关联一个类来放置在div上,在那里你想这样做,在那里你知道内容的格式,以避免出现你提到的情况。列表问题后面的相同标题与使用+选择器有相同的问题。
p { margin-top: 24px; }
h1 { margin-bottom: -24px; } // play with this value as necessary