티스토리 뷰
한 선택자를 간결하게 줄여주고, 이전에는 자바스크립트 없이는 불가능했던 레이아웃 제어를 가능하게 해줍니다.
1. :is()와 :where() (중복 줄이기)
여러 요소를 한 번에 선택할 때 코드를 획기적으로 줄여줍니다.
- 기능: header p, footer p, section p처럼 반복되는 선택자를 하나로 묶습니다.
- 차이점 (우선순위 점수):
- :is(): 괄호 안에 있는 선택자 중 가장 점수가 높은 것의 우선순위를 따릅니다.
- :where(): 우선순위 점수가 항상 0점입니다. 기존 스타일을 덮어쓰기 쉬워 기본 스타일(Reset)을 잡을 때 유리합니다.
CSS
/* 기존 방식 */
header button:hover, footer button:hover, aside button:hover { color: blue; }
/* :is() 활용 */
:is(header, footer, aside) button:hover { color: blue; }
2. :not() (부정 선택자)
"이것만 제외하고"라는 조건을 걸 때 사용합니다.
- 기능: 괄호 안의 선택자와 일치하지 않는 모든 요소를 선택합니다.
- 활용 예시: 마지막 리스트 아이템에만 테두리를 빼고 싶을 때 유용합니다.
CSS
/* 마지막 li를 제외한 모든 li에 밑줄 추가 */
.table-body li:not(:last-child) {
border-bottom: 1px solid #ddd;
}
3. :has() (부모 선택자 - CSS의 혁명)
그동안 CSS는 '부모가 자식을 선택'할 수는 있었지만, '자식의 상태에 따라 부모를 선택'할 수는 없었습니다. 이를 해결해 준 것이 바로 :has()입니다.
- 기능: 특정 자식 요소를 포함하고 있는 부모 요소를 선택합니다.
- 활용 예시: "체크박스가 체크된 상태인 li의 배경색을 바꿔라" 같은 처리가 가능합니다.
CSS
/* 이미지(img)를 포함하고 있는 figure 요소에만 테두리 추가 */
figure:has(img) {
border: 1px solid #ccc;
}
/* 체크박스가 선택된(.checked) 상태인 행(li)의 배경색 변경 */
li:has(input:checked) {
background-color: #eff6ff;
}
💡 한 눈에 비교하는 요약표
| 선택자 | 핵심 개념 | 주요 용도 |
| :is() | "또는(OR)" + 높은 점수 | 긴 선택자 그룹화, 코드 간결화 |
| :where() | "또는(OR)" + 0점 | 프레임워크나 라이브러리의 기본 스타일 정의 |
| :not() | "제외(Except)" | 특정 요소만 스타일에서 배제할 때 |
| :has() | "포함(Contains)" | 자식의 유무나 상태에 따른 부모 스타일 제어 |
🛠️ 실무 적용 예시 (게시판 코드 개선)
우리가 만들었던 게시판 코드에 이 선택자들을 적용하면 훨씬 세련되게 관리할 수 있습니다.
CSS
/* 1. 공지(notice)와 중요(star) 글만 굵게 표시 */
.table-body li:is(.notice, .star) { font-weight: bold; }
/* 2. 링크가 없는 행만 마우스 커서를 기본으로 변경 */
.table-body li:not(:has(a)) { cursor: default; }
/* 3. 체크박스가 선택된 행 전체의 디자인 변경 (자바스크립트 없이 가능!) */
.table-body li:has(input[type="checkbox"]:checked) {
background-color: #f1f5f9;
outline: 2px solid #2563eb;
}
이 선택자들은 현재 모든 최신 브라우저(Chrome, Safari, Edge, Firefox 등)에서 지원되므로 안심하고 사용하셔도 됩니다.
※ 해당 내용은 Google Gmini3.0에서 작성되었습니다.
'WEB > css' 카테고리의 다른 글
| clamp() 함수와 **CSS 변수(Variables)** (0) | 2026.01.14 |
|---|---|
| 폼(Form) 요소의 상태를 제어하거나 특정한 위치를 타겟팅할 때 유용한 선택자 (0) | 2026.01.14 |
| CSS 선택자의 종류와 기능 (0) | 2026.01.14 |
| [챗GPT가 알려주는] 사용자 지정 CSS 속성 (Custom Properties, 또는 CSS 변수)란? (0) | 2025.04.25 |
| css var사용법 (0) | 2025.04.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 썬크림 #닥터지썬크림 #내돈내산 #내돈내산썬크림 #썬크림추천 #spf50썬크림 #닥터지메디유브이울트라선
- ajax
- 파비콘 #파비콘 사이트에 적용
- 자바스크립트 #javascript #math
- css미디어쿼리 #미디어쿼리 #mediaquery
- 자바스크립트정규표현식
- 정보처리기사 #정보처리기사요약 #정보처리기사요점정리
- 좋은책
- sw기술자평균임금 #2025년 sw기술자 평균임금
- thymeleaf
- 바지락칼국수 #월곡동칼국수 #칼국수맛집
- 좋은책 #밥프록터 #부의원리
- 연명의료결정제도 #사전연명의료의향서 #사전연명의료의향서등록기관 #광주사전연명의료의향서
- lg그램pro #lg그램 #노트북 #노트북추천 #lg노트북
- 자바스크립트countiue
- iptime와이파이증폭기 #와이파이증폭기설치
- 와이파이증폭기추천 #와이파이설치
- // 사진직: 데이터가 없으면 DEFAULT_IMG 사용 const profileSrc = (d.img && d.img !== "") ? d.img : DEFAULT_IMG;('#user-photo').attr('src'
- jQuery #jQuery이미지슬라이드 #이미지슬라이드
- jdk #jre
- 쇼팬하우어 #좋은책
- 탭메뉴자바스크립트
- 파비콘사이즈
- 테스크탑무선랜카드 #무선랜카드 #아이피타이무선랜카드 #a3000mini #무선랜카드추천
- 증폭기 #아이피타임증폭기
- echart
- 무료폰트 #무료웹폰트 #한수원한돋움 #한수원한울림 #한울림체 #한돋움체
- SQL명령어 #SQL
- 자바스크립트break
- 광주분식 #광주분식맛집 #상추튀김 #상추튀김맛집 #광주상추튀김
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
글 보관함
