논리적 의사클래스의 이해와 활용
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 웹 개발자 및 프론트엔드 엔지니어
- 중급 이상의 CSS 기술 수준을 가진 개발자
- 현대적인 CSS 선택자 활용을 원하는 개발자
핵심 요약
:not()
: 특정 선택자와 일치하지 않는 요소에 스타일 적용 (예:a:not(.btn)
):is()
: 동일한 규칙을 공유하는 여러 선택자를 간결하게 표현 (예::is(h1, h2, h3)
):where()
: 선택자 구문과 동일하지만 특이도가 0인 선택자 (예::where(article, section)
):has()
: 특정 자식/손자 요소를 포함하는 요소에 스타일 적용 (예:div:has(img)
)
섹션별 세부 요약
1. 논리적 의사클래스의 정의
- DOM 구조 또는 요소 간 관계를 기반으로 요소를 선택하는 CSS 의사클래스
:not
,:is
,:where
,:has
등 4가지 핵심 의사클래스 추천
2. 의사클래스별 기능 및 예시
:not(selector)
- 특정 선택자와 일치하지 않는 요소 선택
- 예: button:not(.primary)
→ .primary
클래스가 없는 버튼에 적용
:is(selector, …)
- 여러 선택자를 하나의 규칙으로 묶어 간결하게 표현
- 예: :is(h1, h2, h3)
→ 제목 요소에 동일한 스타일 적용
:where(selector, …)
- :is()
와 동일하지만 특이도가 0인 선택자 (스타일 우선순위 조절에 유리)
- 예: :where(article, section)
→ 문서 구조에 따라 선택자 우선순위 영향 없음
:has(selector)
- 특정 자식/손자 요소를 포함하는 요소 선택
- 예: div:has(img)
→ 이미지를 포함한 div
에 스타일 적용
3. 순위 기반 의사클래스
:nth-child(n)
,:nth-of-type(n)
,:nth-last-child(n)
,:nth-last-of-type(n)
- 요소의 순서에 따라 선택 (예: li:nth-child(2)
→ 두 번째 자식 li
선택)
:first-child
,:last-child
,:only-child
,:only-of-type
- 특정 위치 또는 유일성 기반 선택 (예: p:only-of-type
→ 부모 내 유일한 p
요소 선택)
:empty
- 텍스트나 공백이 없는 요소 선택 (예: div:empty
→ 내용이 없는 div
선택)
결론
:not
,:is
,:where
,:has
4가지 의사클래스를 완벽히 이해하면 유연하고 효율적인 CSS 규칙 작성이 가능하다.:is()
는 선택자 중복을 줄이고,:has()
는 복잡한 DOM 구조를 간결하게 조작할 수 있다.- 현대 웹 개발에서는 선택자 우선순위 조절과 복잡한 요소 필터링을 위해 이 4가지 의사클래스를 필수적으로 사용해야 한다.