html - 当 CSS 中有 Y 个兄弟元素时,如何仅定位最后 N 个兄弟元素?

标签 html css css-selectors

当有Y个兄弟元素时,是否可以定位到最后N个兄弟元素?

例如,我有元素列表,如果且如果恰好有 8、11、14 等兄弟元素我希望最后两个看起来不同(所以 8 + 3n).

如果有任何其他数量的 child ,我希望他们看起来都一样。

最佳答案

到目前为止,最简单的方法是针对您想要设置样式的 2 个元素中的每一个元素使用其自己的一组伪类。

如您所述,最后一个 child 由 3n+8(8、11、14...)表示。那么倒数第二个 child 就是3n+7(7,10,13...)。

li:nth-last-child(1):nth-child(3n+8),
li:nth-last-child(2):nth-child(3n+7) {
  color: red;
}

ul { counter-reset: item; list-style-type: none; }
li { display: inline; padding: 0.25em; }
li::before { content: counter(item); counter-increment: item; }
<ul><li><li><li><li><li><li><li><li></ul>
<ul><li><li><li><li><li><li><li><li><li></ul>
<ul><li><li><li><li><li><li><li><li><li><li></ul>
<ul><li><li><li><li><li><li><li><li><li><li><li></ul>
<ul><li><li><li><li><li><li><li><li><li><li><li><li></ul>
<ul><li><li><li><li><li><li><li><li><li><li><li><li><li></ul>
<ul><li><li><li><li><li><li><li><li><li><li><li><li><li><li></ul>

您还可以使用 Can CSS detect the number of children an element has? 中的技术,使用一个复杂的选择器来完成此操作,将 3n+8 替换为 :nth-last-child() 参数,并使用额外的 :nth-last-child(-n+2) 来定位具有一个伪类的最后两个元素:

li:first-child:nth-last-child(3n+8) ~ li:nth-last-child(-n+2) {
  color: red;
}

ul { counter-reset: item; list-style-type: none; }
li { display: inline; padding: 0.25em; }
li::before { content: counter(item); counter-increment: item; }
<ul><li><li><li><li><li><li><li><li></ul>
<ul><li><li><li><li><li><li><li><li><li></ul>
<ul><li><li><li><li><li><li><li><li><li><li></ul>
<ul><li><li><li><li><li><li><li><li><li><li><li></ul>
<ul><li><li><li><li><li><li><li><li><li><li><li><li></ul>
<ul><li><li><li><li><li><li><li><li><li><li><li><li><li></ul>
<ul><li><li><li><li><li><li><li><li><li><li><li><li><li><li></ul>

关于html - 当 CSS 中有 Y 个兄弟元素时,如何仅定位最后 N 个兄弟元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35063475/

相关文章:

html - 将子子菜单添加到水平菜单

html - 如何使用多个类选择器为多个元素简化 css 规则

html - 如何在 NavBar 高度更改时调整内容大小

html - 如何在不需要的地方移动 anchor 元素

html - Phonegap - 为什么我的 div 高度返回 0?

html - CSS - 让图像随着居中文本移动 - 对齐输入文本

html - 使用浏览器问题保持文本移动

java - 通过 Selenium 和 Java 使用 CssSelector 识别新添加的元素

css - 在 CSS3 中用什么代替 CONTAINS()

html - 如何根据内容选择列表项?