Study/CSS3

[CSS3] not & has

taecongs 2024. 11. 26. 14:37

알고있으면 좋은 CSS3 Tip✨


가상 클래스(not, has)란 무엇인가?

  • :not은 특정 요소가 없는 태그를 선택한다.
  • :has는 특정 요소를 가진 태그를 선택한다.

 

(1) :not

  <style>
    /* 모든 <p> 요소에 적용 */
    p {color: red;}
    
    /* :not()을 사용하여 class가 "highlight"를 제외한 나머지 요소에 적용 */
    p:not(.highlight) {background-color: blue;}
    
    /* class가 "highlight"인 요소에 적용 */
    p.highlight {background-color: yellow;}
  </style>
  
  <p>일반적인 <p> 요소입니다.</p>
  <p class="highlight">이 <p> 요소는 하이라이트입니다.</p>
  <p>또 다른 일반적인 <p> 요소입니다.</p>
  • 괄호 안의 매개변수 요소를 제외한 모든 요소의 스타일을 지정하는 데 사용한다.
  • :not()을 사용하면 선택자를 보다 구체적으로 지정할 수 있어, 특정 요소를 제외하고 스타일을 적용하는 데 유용하다.

 

(2) :has

  <style>
    /* .card 클래스가 포함된 부모 요소가 .highlight 클래스를 자식으로 가지고 있다면 적용 */
    .card:has(.highlight) {background-color: yellow;}

    /* 일반 .card 요소에 적용 */
    .card {background-color: lightgray; padding: 20px; margin: 10px;}

    /* .highlight 클래스가 있다면 적용 */
    .highlight {color: red; font-weight: bold;}
  </style>
  
  <div class="card"><p>일반 카드</p></div>
  <div class="card"><p class="highlight">하이라이트된 카드</p></div>
  <div class="card"><p>일반 카드 2</p></div>
  • 자식 요소의 조건에 따라 부모 요소의 스타일을 동적으로 변경할 수 있다.
  • 자식 요소에 특정 클래스가 있을 때 부모 요소에 스타일을 적용하거나, 특정 자식 요소가 포함된 부모만 다른 스타일을 주는 방식으로 유용하게 사용할 수 있다.
  • 현재 최신 버전의 Chrome, Edge, Safari에서 지원되지만, Firefox는 아직 지원하지 않는다.

 

(3) :not & :has 같이 사용하기

/* .price_info라는 클래스를 가진 자식 요소가 없는 부모 요소를 선택한다. */
.markerRound_detail_round3.bubbleType2:not(:has(.price_info)) .price_title {border-radius:0 5px 5px 5px;}
  • markerRound_detail_round3와 bubbleType2 클래스를 모두 가지며, 자식 요소로 price_info 클래스를 가지고 있지 않은 요소에서 그 안에 있는 price_title 클래스의 요소에 대해 border-radius를 0 5px 5px 5px로 설정한다.

'Study > CSS3' 카테고리의 다른 글

[CSS3] white-space  (0) 2024.11.27
[CSS3] 크로스브라우징(Cross Browsing)  (0) 2024.11.26
[CSS3] line-clamp  (0) 2024.02.29
[CSS3] 가상 클래스 & 요소 선택자  (0) 2024.02.29
[CSS3] 애니메이션(animation), 키프레임(@keyframes)  (0) 2023.10.05