我如何选择;“最后一个孩子”;在CSS中使用特定的类名? test1 测试2 测试3 测试4

我如何选择;“最后一个孩子”;在CSS中使用特定的类名? test1 测试2 测试3 测试4,css,css-selectors,Css,Css Selectors,如何选择类名为:列表的“最后一个孩子” <ul> <li class="list">test1</li> <li class="list">test2</li> <li class="list">test3</li> <li>test4</li> </ul> ul li.列表:最后一个孩子{背景颜色:#000;} 我知道上面的例子不起作用,

如何选择类名为:列表的“最后一个孩子”

<ul>
    <li class="list">test1</li>
    <li class="list">test2</li>
    <li class="list">test3</li>
    <li>test4</li>
</ul>

ul li.列表:最后一个孩子{背景颜色:#000;}
我知道上面的例子不起作用,但是有没有类似的方法可以起作用

重要提示:

a) 我不能使用ulli:nth child(3),因为它也可能位于第四或第五位


b) 没有JavaScript。

我建议您利用这样一个事实,即您可以为一个元素分配多个类,如下所示:

  • test1
  • 测试2 测试3
  • 测试4
最后一个元素具有与其同级元素类似的
列表
类,但也具有
最后一个
类,您可以使用该类设置所需的任何CSS属性,如下所示:

ulli.list{
颜色:#FF0000;
}
最后一个{
背景色:#000;
}

这可以使用属性选择器来完成

<style>
    ul li.list:last-child{background-color:#000;}
</style>
类~
选择一个特定的整词。这允许您的列表项在需要时以不同的顺序具有多个类。它仍然会找到确切的类“list”,并将样式应用于最后一个类

请参见此处的工作示例:

阅读有关属性选择器的详细信息:


您可以使用相邻的同级选择器来实现类似的功能,这可能会有所帮助

[class~='list']:last-of-type  {
    background: #000;
}
将有效地以类
其他类
的最后一个元素之后紧跟其后的元素为目标


请在此处阅读更多内容:

这是一个厚颜无耻的回答,但如果您仅限于CSS,并且能够在DOM中反转项目,则可能值得考虑。它依赖于这样一个事实,即虽然特定类的最后一个元素没有选择器,但实际上可以设置第一个的样式。诀窍是使用flexbox以相反的顺序显示元素

ul{
显示器:flex;
弯曲方向:柱反向;
}
/*将所需样式应用于所有匹配元素*/
ul>li.list{
背景色:#888;
}
/*使用更具体的选择器,“取消样式”元素不是第一个*/
ul>li.list~li.list{
背景色:继承;
}
  • 0
  • 一,
  • 2
  • 0
  • 1
  • 2
  • 三,

如果没有JS,则无法将列表中类名的最后一个实例作为目标

然而,你可能不会完全失去运气,这取决于你想要实现什么。例如,通过使用下一个同级选择器,我在最后一个
元素之后添加了一个可视分隔符。请在此列出
元素:



给它一个类名,这将是最简单的跨浏览器方式另一个副本将是。。。虽然不能添加,因为它成为一个循环参考。如果不是为了搜索引擎优化,我会删除这个问题,因为这里所有的答案都很糟糕。他们要么是错误的/误导性的,要么完全没有抓住问题的关键。Chase的回答尤其是另一个例子,说明了为什么使用类型选择器以外的任何类型进行限定:*-对这些伪类的实际工作方式产生各种误解-我在回答的最后一部分讨论了一个类似的误解:第一个类型。不幸的是,我发现这在技术上不起作用。。。它真正做的是找到与类匹配的项,查看它们是什么,在本例中是列表项,然后选择“类型的最后一个”,而不管该特定项是否具有
list
类。不过,我会留下答案,以防它引发一些其他解决方案,因为属性和伪选择器非常有趣且功能强大。这并不是用问题中的html选择类“list”的最后一个div,做
[class~='list']
而不仅仅是
。list
?什么跨浏览器问题?这个答案毫无意义。这不起作用,而且从来没有起过作用。除了元素类型之外,没有CSS方法选择最后一个。您的属性选择器将与元素所具有的类型相匹配,而不是与属性本身相匹配。这根本不能回答问题,您读过吗?他在问如何做到这一点,而不必为最后一个元素添加另一个类,这就是:last-child选择器的全部优点。这不应该是一个被接受的答案。@请花时间阅读它,而不是做这样的陈述。当你在这里时,建议一个更好的解决方案。@Ibu我认为最好将“last”类放在第三个li元素上(即文本为“test3”的元素,而不是放在“test4”的元素上),以避免一些混淆-当我最初在JSFIDLE中尝试你的代码时,我想“这是如何实现OP要求的?”直到我明白你对“最后一节课”的意思。这个答案完全不能回答你提到的问题@nights@danrichardson事实上确实如此。这实际上是唯一一个真正解决问题的黑客。我同意,这是目前的答案。我想可能会有一种情况,你不能更改DOM,但可以e可以改变被注入的数据。如果你颠倒它的顺序,flexbox的重新排序将使其恢复正常。还应该解决只有一个类的项目的情况。这对我来说很好,但实际上并没有像OP提到的那样选择类
列表
的最后一个子项。也就是说,它可以用于获取s相似的结果取决于需要。对于我的使用,这是因为我只需要一个边框,所以我可以将它应用到兄弟姐妹的顶部。是的,它看起来更足够了
.list-item.other-class + .list-item:not(.other-class)
$('.class')[$(this).length - 1] 
$( "p" ).last().addClass( "selected" );