>  기사  >  웹 프론트엔드  >  일치하지 않는 요소를 건너뛸 때 :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) 선택기(클래스 포함)

CSS에서 :nth-child(n) 선택기는 요소를 선택합니다. 그 사람은 부모의 n번째 자녀입니다. n이 홀수이면 n번째 자식(홀수) 선택자는 홀수 요소를 선택하고, n이 짝수이면 n번째 자식(짝수) 선택자는 짝수 요소를 선택합니다.

다음 HTML 마크업을 고려하세요. , "parent" 클래스가 있는 항목을 나열하기 위해 :nth-child 선택자를 적용하려고 합니다.

<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으로 문의하세요.