Css 最后一个孩子?

Css 最后一个孩子?,css,css-selectors,Css,Css Selectors,我有一个无序的列表,它可以包含偶数项或奇数项。我正在寻找一种CSS唯一的方法,如果lis的数量是偶数,可以从最后2个li标记中删除边框。:last-child伪选择器将删除最后一个 li { float: left; border-bottom: 1px solid #000; } li:last-child{ border-bottom: none; } 适用于奇数个lis 但对于偶数,我需要删除单元格3的底部 所以我想我可以用li:n最后一个孩子,但我不知道应该用什么等式来抓住最后一个奇

我有一个无序的列表,它可以包含偶数项或奇数项。我正在寻找一种CSS唯一的方法,如果lis的数量是偶数,可以从最后2个li标记中删除边框。:last-child伪选择器将删除最后一个

li {
float: left;
border-bottom: 1px solid #000;
}

li:last-child{
border-bottom: none;
}
适用于奇数个lis 但对于偶数,我需要删除单元格3的底部 所以我想我可以用li:n最后一个孩子,但我不知道应该用什么等式来抓住最后一个奇数的孩子


它不是2n+1,2n-1,n-1,或者我能想到的任何东西。请帮忙

您可以使用第n个子选择器:

li:nth-child(3) { border-bottom: none;}

li:nth-child(4) {border-bottom: none;}

但是,由于IE 8中不支持此功能。。。您只需将一个类设置为这两个li元素,并使用特殊性将边框底部设置为“无”。

n最后一个子元素从最后一个子元素向后计数,因此要获取倒数第二个元素,表达式为:

li:nth-last-child(2)
您可以组合伪选择器,以便选择从第二个到最后一个的子项,但仅当其为奇数时,使用:

li:nth-last-child(2):nth-child(odd) {border-bottom: none;}
因此,整个事情应该是:

li:last-child,
li:nth-last-child(2):nth-child(odd) {border-bottom: none;}
在回答@ithil的问题时,以下是我在SASS中的写作方式:

li
  &:last-child,
  &:nth-last-child(2):nth-child(odd)
    border-bottom: none
这并不简单,因为“倒数第二个奇数子”的选择总是需要“两步”选择器

在回答@Caspert的问题时,您可以通过将更多选择器分组来对任意多个最后的元素执行此操作。您觉得应该有一些xn+y模式来执行此操作而不进行分组,但是这些模式只是通过从最后一个元素向后计数来工作

关于最后三个要素:

li:last-child,
li:nth-last-child(2):nth-child(odd),
li:nth-last-child(3):nth-child(odd) {border-bottom: none;}
这是一个类似SASS的东西可以帮助您生成选择器的地方。我会将其构造为占位符类,并使用它扩展元素,并设置变量中的列数,如下所示:

$number-of-columns: 3

%no-border-on-last-row
 @for $i from 1 through $number-of-columns
   &:nth-last-child($i):nth-child(odd)
     border-bottom: none

//Then, to use it in your layout, just extend:

.column-grid-list li
  @extend %no-border-on-last-row
可能:

li:nth-child(2n){border:1px dashed hotpink}
li:nth-child(2n-2), li:last-child{border:none;}
另一种选择:

li:last-child:not(:nth-child(odd))

这是一把小提琴:

这对我有用。动态选择最后一个奇数子项

li:nth-last-child(1):nth-child(odd)

这只会抓取第三个或第四个孩子-它不能处理任意数量的物品。这不符合OP的要求。@fskreuz:这可能已经过时几年了。考虑找到一个更新的参考文献。在文章的末尾,它已经更新了THU 15 DEC 2011 06:20:47上午CET。基于:除IE8和更早版本外,所有主流浏览器都支持:n子选择器。直到伪选择器可以像常规选择器一样组合。。。我知道我在概念上遗漏了一些东西,但不确定是什么。谢谢你知道这个解决方案是否可以通过使用sass/less这样的预处理器来简化吗?我已经在答案中添加了sass中的等价物。我已经有一段时间没有少用了-不确定它在里面会是什么样子,或者它是否会更简单。参考:,
li:last-child:not(:nth-child(odd))
li:nth-last-child(1):nth-child(odd)