선택기가 아닌 CSS가 작동하는 방법에 대한 완벽한 안내서
6326 단어 csswebdevtutorialprogramming
:not()
선택기를 사용하여 이를 수행할 수 있습니다. 어떻게 작동하는지 살펴보겠습니다.셀렉터가 아닌 CSS
CSS
:not()
선택기는 대부분의 브라우저에서 광범위하게 지원됩니다. 그것이 작동하는 방식은 우리가 선택자를 생성한 다음 그것이 되어서는 안 되는 것을 지정하는 것입니다. 예를 들어 다음 HTML이 있다고 가정합니다.<div class="not-red">Not Red</div>
<div class="not-red">Not Red</div>
<div>Red</div>
<div>Red</div>
여기에는
div
가 많이 있으며 일부는 빨간색이 아니어야 합니다. 일반적으로 div
요소를 제외하고 페이지의 모든 .not-red
요소를 빨간색으로 표시하려면 :not(.not-red)
를 사용하여 빨간색이 아닌 그대로 유지되도록 할 수 있습니다.div:not(.not-red) {
color: red;
}
여기 또 다른 예가 있습니다. 기본적으로
.old-fashioned
요소를 제외한 모든 요소에는 Arial 글꼴이 있습니다.<div class="old-fashioned">Old Fashioned Text</div>
<div>Some Text</div>
비
.old-fashioned
요소만 Arial 글꼴을 사용하는 CSS는 다음과 같습니다.div:not(.old-fashioned) {
font-family: Arial, sans-serif;
}
선택자가 아닌 CSS는 특이성을 높입니다.
특정 선택자가 다른 선택자를 "재정의"하는 CSS의 특이성 개념에 익숙할 것입니다. 예를 들어
class
는 id
보다 특이성이 낮으므로 id
CSS 속성은 동일한 요소의 class
속성을 재정의합니다.:not
선택자도 특이성에 영향을 미칩니다. 예를 들어 코드에 div:not(#id)
가 있는 경우 여전히 id
가 있는 것으로 간주되므로 특이성이 id
가 있는 것처럼 증가합니다. :not()
를 사용할 때 기억해두면 유용합니다.선택자가 아닌 CSS 및 DOM 구조
:not()
에 대한 한 가지 혼란스러운 점은 요소 내 항목에 적용되는 스타일을 중지하기 위해 이를 사용하려고 할 때입니다. 예를 들어 다음 HTML이 있다고 가정합니다.<div class="container">
<form>
<div class="input-element">
<input type="text" />
</div>
</form>
<div class="input-element">
<input type="text" />
</div>
</div>
input
요소 내에 있지 않은 form
요소에만 스타일을 적용하려고 한다고 가정해 보겠습니다. 간단하죠? 다음과 같이 시도해 볼 수 있습니다.div :not(form) input {
border: 2px solid red;
}
이 방법만 작동하지 않으며 그 이유는
:not()
가 모든 수준에 적용되고 각 입력을 .input-element
로 래핑하기 때문입니다. 즉, :not(form)
가 .input-element
에 적용되며 실제로는 형식이 아닙니다. 따라서 두 요소input
모두 빨간색 테두리를 갖게 됩니다. 이를 방지하려면 래퍼 요소를 제거하고 입력이 다음 형식의 직계 자식이 되도록 해야 합니다.<div class="container">
<form>
<input type="text" />
</form>
<input type="text" />
</div>
그렇게 하면 양식의 입력이
div :not(form) input
에서 스타일을 상속받지 않습니다.선택기 지원이 아닌 CSS
:not()
선택기에는 두 가지 버전이 있다는 점에 유의하는 것이 중요합니다. 하나는 간단한 단일 CSS 선택기만 허용하고, :not()
에 대한 최신 업데이트는 모든 CSS 선택기를 허용합니다.모든 브라우저는 Internet Explorer를 포함하여 지금까지 사용한 것과 같은 단순한 단일
:not()
선택기를 지원합니다. 그러나 모든 브라우저가 복합 선택기를 지원하는 것은 아닙니다. :not
의 간단한 선택기를 사용하여 다음을 모두 수행할 수 있습니다.:not(#id)
:not(.class)
:not(element)
:not([attrbute])
그러나 다음과 같은 것은 복잡한 선택자에서만 사용할 수 있습니다.
:not(#id, .class, [attribute])
:not(#id.class)
:not(element#id, #id.class)
다행스럽게도 복잡한 선택자에 대한 지원은 여전히 상당히 높습니다. 오늘날 복잡한 선택기를 지원하지 않는 유일한 브라우저는 Internet Explorer와 일부 모바일 브라우저입니다. You can see the full support for the :not selector here .
Reference
이 문제에 관하여(선택기가 아닌 CSS가 작동하는 방법에 대한 완벽한 안내서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/smpnjn/a-complete-guide-to-how-the-css-not-selector-works-5djo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)