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

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

Mary-Kate Olsen
發布: 2024-11-07 03:48:03
原創
905 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板