2014-10-04 93 views
1

我有一个包含多个<li>的列表,我想在它们之间添加余量。:不是vs:第n个孩子 - 我应该选择哪一个?

我更喜欢以下哪一项? (如果有的话)为什么它比另一个好?

  1. li:not(:last-child) { margin-bottom: 5px; }

  • li:nth-child(n+2) { margin-top: 5px; }
  • This page表明:not选择器具有更好的浏览器支持比:nth-child。 (因为:nth-child在FF3中不起作用)而且我在广泛的浏览器支持之后。那页已经过时了一点,所以我想在这里问明智的社区。有什么理由让我更喜欢一个到另一个?

    +1

    一般来说,我只需设置'margin-bottom',然后使用':last-child'去除最后一个元素的样式。据我所知,这有最高的浏览器支持。 – Jon 2014-10-04 18:32:18

    +0

    是否有帮助http://stackoverflow.com/a/5080787/1524085 – 2014-10-04 18:32:24

    +0

    有关浏览器支持表的更新来源,请查看http://www.quirksmode.org/css/ – IMSoP 2014-10-04 18:33:10

    回答

    2

    我认为您会发现最好的浏览器支持将间距设置为margin-top,并将其与第一个:first-child一起移除。 :first-child比这些伪选择器的其余部分有更好的支持,并且受IE7和更好的支持。

    此外,这样做会意味着当你只有1个元素时,你不会有无用的余量,这将是你的心态。

    如果你必须支持较老的IE,那么我认为你将不得不使用JS。