首頁  >  文章  >  web前端  >  跳過不符元素時如何使用 :nth-child 取代元素顏色?

跳過不符元素時如何使用 :nth-child 取代元素顏色?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-07 03:48:03807瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn