管理边距,使最后一个元素没有边距

Posted

技术标签:

【中文标题】管理边距,使最后一个元素没有边距【英文标题】:Manage margins so that the last element(s) have no margin(s) 【发布时间】:2016-07-19 05:14:21 【问题描述】:

我使用盒子,我想总是给最后一个元素一个“margin-bottom:0”。所以首先我给每个元素一个“margin-bottom: 1em;”。我现在想从我的框中的最后一个元素中删除这个边距底部,但是如果其中有一个元素不起作用,我仍然在底部有一个边距。知道怎么做吗?它可以是一个段落或一个 DIV 或 SPAN 或其他任何东西,所以我并不总是想手动执行此操作。我想用这个做一个mixin。

我试过了:

section *+:last-child 
   margin-bottom: 0;
   border: 3px solid blue;

但在最后一个 div 中有一个带有边距的段落,所以它不起作用。

【问题讨论】:

我想你需要一门课。除非每个部分都以 <p> 标记或相同的标记结尾,否则使用 last-child 或 last-of-type 没有足够的特异性。你真的应该尽可能地避免 * 。这是一个巨大的性能冲击。 嗯,是的,我想得越多,我就越需要上课:-(。 【参考方案1】:

保持简单。把它放在你的样式表的顶部,然后忘记。在过去,它为我省去了很多麻烦:

*:last-child 
  margin-bottom: 0;

【讨论】:

不要这样做。使用更具体的东西。并非所有元素都垂直流动。【参考方案2】:
  section div:last-of-type p 
  margin-bottom: 0;
  border: 3px solid blue;
 

似乎对它进行排序.... 但是,这假定最后一个元素是 div 内的段落。如果你有不同的最后一个元素,一个类将是一个更有效的解决方案。

【讨论】:

【参考方案3】:

您想使用:not()。也就是说,

section:not(:last-child) margin-bottom:1em;

我的语法可能不适合你正在做的事情,但这是一个开始。

【讨论】:

我认为 ":not" 并没有真正的帮助,因为我不知道最后一个是什么类型的元素,它可能是 DIV 或 P 或 SPAN。但也许这可能会导致解决方案......嗯。 @HenningFischer 然后你可以让它成为父元素的最后一个子元素,这并不重要。只是 :not(:last-child)。再说一次,我现在只是在做准备而不是测试。 @HenningFischer 只需添加一个空格。 section :not(:last-child) @abluejelly 我认为他最后的评论可能是正确的。 当我用我的笔做这件事时,它看起来更像是一团糟......。【参考方案4】:

我会亲自为这些使用类名,并专门针对我要修改的类。但是,如果你想避免类名,你可以使用 last-child

Syntax:
:last-child

Usage:
p:last-child 
  font-size: 0.75em;

更多信息here

【讨论】:

以上是关于管理边距,使最后一个元素没有边距的主要内容,如果未能解决你的问题,请参考以下文章

将底部边距添加到 ListView 最后一个元素

如何为最后一个元素为 RecyclerView 添加边距?

如何使浮动元素的边距折叠

CSS 删除第一个/最后一个元素的边距

在我的RecyclerView元素中,最后一个元素上下的边距不正确。

如何使元素的边距和宽度相同?