Skip links

CSS :has() 선택자

홈페이지 작업을 하다가 사용하던 기능 중 하나가 활성화 되었을때, 부모 요소에는 active 클래스가 존재하지 않고, 자식 요소에 active 클래스를 주는 형태로 만들어져 활성화 될때에만 부모 요소에 CSS를 적용하기 위해 :has 선택자를 사용하게 되었습니다. 오늘은 이런 경우에 사용할 수 있는 선택자 :has에 대해 알아보고자 합니다.

설명에 들어가기에 앞서 :has() 선택자의 개념에 대해 간략히 설명하고 진행해보겠습니다.

:has() 선택자란?

  • CSS4에서 새롭게 도입된 선택자로, 특정 자식 요소를 가지고 있는 부모 요소를 선택합니다.
  • 원래는 jQuery에서 제공하던 기능이나, 대부분의 브라우저에서사용이 가능합니다.

위에서도 언급했다시피, :has()선택자는 모든 브라우저에서 지원되는 CSS 선택자가 아니기 때문에 지원되는 브라우저의 항목을 잘 살펴보시고 사용하시기 바랍니다.

:has() 선택자 사용 예시

<div class="container-spl">
    <p class="active">이 요소는 스타일을 적용하지 않습니다</p>
    <div>
        <p>이 요소도 스타일을 적용하지 않습니다.</p>
    </div>
    <div>
        <p class="active">이 요소는 스타일을 적용하고 싶습니다.</p>
    </div>
</div>

위 예제에서 container-spl클래스 내에 존재하는 div태그 들 중, 자식요소인 p태그에 active클래스가 있는 부모 div태그에만 스타일을 적용하려고 합니다.":has()" 선택자를 사용하여 이러한 조건을 구현할 수 있습니다.

CSS 코드

.container-spl>div:has(p.active) {
  /* 스타일을 적용할 CSS 속성들 */
  background-color: #f00;
  border: 1px solid #fff;
  padding: 10px;
  color:#fff;
}

위 CSS코드는 위 조건에 해당하는 div 태그에 배경을 빨간색을 주고 배경 바깥쪽 선은 1px 두께의 하얀색 실선, 안쪽 여백 10px, 글자색은 흰색을 주도록 설정한 코드입니다.

위와 같이 작성할 경우 실제 보여지는 텍스트

이 요소는 스타일을 적용하지 않습니다

이 요소도 스타일을 적용하지 않습니다.

이 요소는 스타일을 적용하고 싶습니다.

이와 같이 내가 원하는 부모 요소에 클래스값이 없더라도, 자식 요소의 클래스 값을 이용해 스타일을 적용해 줄 수 있습니다.

오늘은 :has()선택자의 개념과 지원브라우저, 그리고 사용 예시까지 알아 보았습니다. 궁금하신 점 있으시면 아래의 댓글을 이용해주세요. 다음에는 더 좋은 글로 찾아뵙겠습니다. 감사합니다.

Leave a comment

Contact

레온소프트 / 319-13-01368
부천시 도약로 189번길 25
제 2023-경기부천-2371호
평일 오전 10:00 ~ 오후 5:00
휴무 토, 일, 공휴일

Need help?

+82-10-9609-1109

Need support?

leo-k@naver.com

ⓒ 2015. LEO-KIM. ALL RIGHT RESERVED.

전화문의
카톡문의
LEON
검색하기
Explore
Drag