프로그래밍 언어/HTML,CSS,JS

특정 클래스 나 속성이 없는 요소를 선택하는 CSS 선택기

Rateye 2021. 8. 6. 10:48
728x90
반응형
질문 : 특정 클래스 나 속성이없는 요소를 선택하는 CSS 선택기를 작성할 수 있습니까?

특정 클래스 가없는 모든 요소를 선택하는 CSS 선택기 규칙을 작성하고 싶습니다. 예를 들어, 다음 HTML이 주어지면 :

<html class="printable">
    <body class="printable">
        <h1 class="printable">Example</h1>
        <nav>
            <!-- Some menu links... -->
        </nav>
        <a href="javascript:void(0)" onclick="javascript:self.print()">Print me!</a>
        <p class="printable">
            This page is super interresting and you should print it!
        </p>
    </body>
</html>

나는 선택을 작성하려합니다 선택이이 경우, 탐색 요소의 "인쇄"클래스가없는 모든 요소.

이것이 가능한가?

참고 : 이것을 사용하려는 실제 HTML에는 "인쇄 가능"클래스가없는 요소가 훨씬 더 많이있을 것입니다 (위의 예에서 그 반대라는 것을 알고 있습니다).

답변

:not() 의사 클래스에 클래스 선택기를 추가합니다.

:not(.printable) {
    /* Styles */
}

:not([attribute]) {
    /* Styles */
}

당신은 더 나은 브라우저 지원이 필요하지만 (IE8 세 이상은 지원하지 않습니다 :not() ), 당신은 아마 더 "인쇄"클래스가 않습니다 요소에 대한 스타일 규칙을 만드는 길 이죠. 실제 마크 업에 대해 말 했음에도 불구하고 이것이 실현 가능하지 않은 경우 해당 제한을 우회하여 마크 업을 작업해야 할 수 있습니다.

이 규칙에서 설정하는 속성에 따라 일부 .printable 인 자손에 의해 상속되거나 다른 방식으로 영향을 미칠 수 있습니다. 예를 들어 display 가 상속되지는 않지만 display: none:not(.printable) 하면 레이아웃에서 요소와 하위 트리가 완전히 제거되므로 해당 요소와 모든 하위 항목이 표시되지 않습니다. visibility: hidden 을 사용하여이 문제를 해결할 수 있습니다. 대신 보이는 하위 항목을 표시 할 수 있지만 숨겨진 요소는 원래와 마찬가지로 레이아웃에 영향을줍니다. 요컨대 조심하세요.

출처 : https://stackoverflow.com/questions/9110300/can-i-write-a-css-selector-selecting-elements-not-having-a-certain-class-or-attr
728x90
반응형