首页 > web前端 > css教程 > 正文

跳过不匹配元素时如何使用 :nth-child 替换元素颜色?

Mary-Kate Olsen
发布: 2024-11-07 03:48:03
原创
820 人浏览过

How to Alternate Element Colors with :nth-child When Skipping Non-Matching Elements?

:nth-child(even/odd) 选择器,具有 Class

在 CSS 中,:nth-child(n) 选择器选择元素这是他们父母的第 n 个孩子。当 n 为奇数时,nth-child(odd) 选择器选择奇数元素,当 n 为偶数时,nth-child(even) 选择器选择偶数元素。

考虑以下 HTML 标记,我们想要应用 :nth-child 选择器来列出具有“parent”类的项目:

<ul>
    <li class="parent">green</li>
    <li class="parent">red</li>
    <li>ho ho ho</li>
    <li class="parent">green</li>
    <li class="parent">red</li>
</ul>
登录后复制

将以下 CSS 应用于上面的 HTML:

.parent:nth-child(odd) {
    background-color: green;
}

.parent:nth-child(even) {
    background-color: red;
}
登录后复制

出乎意料的是,在第一个非 .parent 元素之后重置元素的颜色。这是因为 :nth-child 选择器适用于列表中的所有元素,而不仅仅是那些具有“parent”类的元素。

为了实现所需的行为,我们需要使用通用兄弟组合器 (~) ,它选择 DOM 树中另一个元素之前的元素。通过将其与 :nth-child 选择器相结合,我们可以在每次遇到非 .parent 元素时替换“.parent”元素的颜色:

.parent:nth-child(odd) {
    background-color: green;
}
.parent:nth-child(even) {
    background-color: red;
}

/* after the first non-.parent, toggle colors */
li:not(.parent) ~ .parent:nth-child(odd) {
    background-color: red;
}
li:not(.parent) ~ .parent:nth-child(even) {
    background-color: green;
}

/* after the second non-.parent, toggle again */
li:not(.parent) ~ li:not(.parent) ~ .parent:nth-child(odd) {
    background-color: green;
}
li:not(.parent) ~ li:not(.parent) ~ .parent:nth-child(even) {
    background-color: red;
}
登录后复制

这种方法允许我们替换颜色“.parent”元素,同时跳过非 .parent 元素。但是,:nth-child 选择器可以向前查找的非 .parent 元素的数量是有限的,因此这种技术对于具有许多交替类的很长列表可能不实用。

以上是跳过不匹配元素时如何使用 :nth-child 替换元素颜色?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!