CSS - 所有元素之间的较大边距但相同元素之间较小的最佳实践

时间:2015-07-23 16:29:57

标签: css

假设我想在页面上的所有元素(p,blockquote,dl,form,ol,ul,pre,table等)之间保持2em垂直距离。

所以我在所有必要元素上抛出margin-bottom:2em;。大。

然后我看到几个P标签,彼此相继,看起来相距太远,我希望它们有1.5em,同时将2em保留在所有其他元素之间。

最优雅的方式是什么,同时坚持使用我们即将到来的利润 - 仅使用底部保证金的概念?

选择器p+p会向p“列表中的所有内容应用底部边距”之外的第一个。请注意,它也会在最后一个p上设置1.5个边距,该边距不应该有较小的边距,而是较大的2em底部边距。

我还尝试了:last-child选择器,首先将小边距值放在所有p标记的底部,然后使用p:last-child将最后一个段落设置为更大的2em底部余量。这听起来不错,但实际上并没有对分组中的最后p进行更改。

  

请注意,我可以通过上边距切换到管理边距   哪个案例p+p可以非常优雅地控制它们之间的间距   p个标签。但是,有时您在顶部(其他元素,如h1等)有额外的间距   并且必须克服这一点。我没有研究这么长时间才知道   肯定margin-bottom是最好的,但这就是我的目标   现在。

1 个答案:

答案 0 :(得分:0)

我最终找出了为什么last-child选择器不起作用。这是因为所有的P和OL以及其他元素都是body元素中的兄弟,所以浏览器实际上并不知道该部分中的最后一个P是最后一个孩子。

我将P的分组包装在<div>代码中,last-child开始正常工作。因为那时last-child运算符未使用body运算符{1}}元素,但是div的最后一个孩子。

所以这是让我开心的相关CSS ......

p { margin: 0em 0em 1em;} // the small margin between P tags
p:last-child {margin-bottom: 2em;} // the large margin