一致しない要素をスキップするときに :nth-child を使用して要素の色を切り替える方法は?

Mary-Kate Olsen
リリース: 2024-11-07 03:48:03
オリジナル
821 人が閲覧しました

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

:nth-child(even/odd) クラス付きセレクター

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>
ログイン後にコピー

上記の HTML に次の CSS を適用します:

.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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!