[CSS] CSS 고급 선택자

2025. 3. 4. 16:54·HTML, CSS, JavaScript

연결 선택자

  • 둘 이상의 선택자를 연결하여, 스타일이 적용될 요소가 어디 부분인지 지정
  • 조합 선택자, 콤비네이션 선택자, 콤비네이션 셀렉터 등으로 불림

1. 하위 요소에 스타일 적용하는 하위 선택자 / 자식 선택자

  • 하위 요소란, 특정 요소를 기준으로 그 안에 포함된 요소
  • 자식 요소란, 현재 요소를 기준으로 바로 한 단계 아래에있는 요소를 뜻함
  • 상위 요소와 하위 요소는 공백으로 구분한다.
(상위 요소) (하위 요소) { ... }
//예시 selection p { ... }
  • 자식요소는 '>' 기호를 사용하여 구분한다.
    • 해당 기호는 자식 요소에만 스타일을 적용한다
부모요소 > 자식요소
//예시 selection > div {...}

2. 형제 요소에 스타일을 적용하는 인접 형제 선택자 / 형제 선택자

  • 부모 요소가 같은 경우, 형제관계라고 하며, 이 때 먼저 나오는 요소를 형 요소, 나중에 나오면 동생 요소라 한다.
  • 인접 형제 선택자의 경우 형 요소에서 첫 번째 동생 요소만 선택하는 것을 뜻함
형제 + 동생 {...}
//예시 h1 + p {...}
  • 이 때 모든 형제 요소를 선택하려면, ' + ' 가 아닌 ' ~ ' 기호를 이용하면 된다.
//모든 형제 요소를 선택
//예시 h1 ~ p { ... }

속성 선택자

  • 태그 안에서 사용하는 속성 값에 따라 요소를 선택하는 역할

1. 특정 속성이 있는 요소를 선택하는 속성 선택자

  • 태그 안에 특정 속성을 사용한 요소만 선택할 때 사용한다.
//특정 속성 예시 (a태그 내에 href 속성을 사용한 것들만 적용하는 방법)
a[href] {...}

2. 특정 속성 값이 있는 요소를 선택하는 속성 = 속성값 선택자

  • 태그 안에서 주어진 속성과 속성값이 일치하는 경우만 찾아 스타일을 지정하는 방법
//속성 = 속성값 지정
a[target = _blank] {...}

3. 여러 값 중 특정 속성 값이 포함된 속성요소를 선택하는 속성 ~= 값 선택자

  • 여러 속성값 중에서 해당 속성값이 포함된 요소를 선택하는 방법
//특정 속성값 포함된 요소 선택하기
[class ~= button] { ... }
  • 이 때, buttons 나 flat-button 등 다른 글자가 포함되어 있으면 선택하지 않음
    • flat button / button은 가능, flat-button / buttons는 불가능

4. 특정 속성값이 포함된 속성 요소를 선택하는 속성 |= 값 선 택자

  • ~= 선택자와는 다르게 하이픈 등으로 연결한 단어에도 스타일을 적용함
  • 해당 값으로 연결되거나, 해당 값이 있는 요소를 찾아 스타일을 적용
//us이거나 us-로 연결된 속성값 찾음
a[title |= us] {...}

5. 특정 속성값으로 시작하는 속성 요소를 선택, 속성 ^= 값

  • 속성값으로 시작하는 요소를 찾는 방법
//속성 값이 eng으로 시작하는 요소를 모두 찾음
a[title ^= eng] {...}

6. 특정 속성값으로 끝나는 속성 요소를 선택, 속성 $= 값

  • 속성값으로 끝나는 요소를 찾는 방법
//xls로 끝나는 요소를 모두 찾음
[href $= xls] {...}

7. 일부 속성값이 일치하는 요소를 선택하는 속성 *= 값 선택자

  • 속성값 위치에 관계없이, 포함되어 있다면 해당 요소 선택
//w3가 포함된 모든 요소 선택
[href *= w3] {...}

가상 클래스와 가상 요소

  • 사용자 동작에 반응하는 가상 클래스로, 특정 동작을 수행시 스타일이 바뀌는 것을 만들고 싶을 때 사용
  • :를 붙여 사용하는 가상 클래스, ::를 붙여 사용하는 가상 요소가 있음
종류 설명
:link 아직 사용자가 방문하지 않은 링크에 스타일 적용, 기본적으로 파란색 글자와 밑줄로 표시
:visited 사용자가 한 번 이상 방문한 링크에 스타일을 적용, 보라색이 기본 값
:hover 웹 요소 위로 마우스를 올려놓을 때 스타일을 적용
:active 웹 요소를 활성화 했을 경우(링크나 이미지를 클릭)  발생하는 스타일을 지정
:focus 텍스트 필드에 마우스를 올려놓거나, 웹에서 Tab을 입력하여 입력 커서를 이동한 경우 스타일 지정
// 다음과 같은 순서를 맞추어야함 ( LoVe HAte )
:link -> :visited -> :hover -> :active
//해당 순서로 입력하지 않으면, 스타일 정의시에도 효과가 나오지 않음

1. 요소 상태에 따른 가상 클래스

종류 설명
:target 앵커 대상에 스타일을 적용, 앵커의 목적지 되는 부분에 스타일을 적용할 수 있음
(블로그에서 목차를 누르면 이동할 때 처럼...)
:enabled, :disabled 요소가 사용할 수 있는 상태일때나 없는 상태일 때 스타일을 지정하는 경우
텍스트 필드에서 회원 약관등을 수정을 못하게 할 때 등등..
:checked checked 속성이 있는 요소의 스타일을 지정하는 경우 사용(radio, checkbox 등)
버튼 클릭 시 레이블을 바꿀 경우 input + label (둘은 형제관계이므로) 선택자를 사용
:not 특정 요소를 제외하고 스타일을 적용, 괄호 안에 있는 요소를 제외함
예시 -> :not([type=....]) 

2. 구조 가상 클래스

  • 웹 문서의 구조를 기준으로, 특정 위치에 있는 요소를 찾아 스타일을 적용할 때 사용하는 가상 클래스 선택자

특정 위치의 자식 요소 선택하는 법

종류 설명
:only-child 부모 안에 자식 요소가 하나뿐일 때 자식요소 선택
A:only-type-of 부모 안에 A 요소가 하나 뿐인경우 선택
:first-child 부모 안에 있는 요소중 첫 번째 자식 요소를 선택
:last-child 부모 안에 있는 요소 중 마지막 자식 요소를 선택
A:first-of-type 부모 안에 있는 A요소 중 첫 번째 요소를 선택
A:last-of-type 부모 안에 있는 A요소 중 마지막 요소를 선택
:nth-child(n) 부모 안에 있는 모든 요소 중 n 번째 자식 요소 선택
:nth-last-child(n) 부모 안에 있는 모든 요소 중 끝에서 n 번째 자식 요소 선택
A:nth-of-type(n) 부모 안에 있는 A요소 중에서 n 번째 요소를 선택
A:nth-last-of-type(n) 부모 안에 있는 A요소 중에서 끝에서 n번째 요소를 선택
  • 이 때 n을  odd나 even, 또는 2n + 1 처럼 수식을 지정해서 이용할 수 있음

3. 가상 요소

  • 문서 안의 특정 부분에 스타일을 지정하기 위해 가상으로 요소를 만들어 추가
  • ::를 넣어서 구분
종류 설명
::first-line 지정 요소의 첫 번째 줄에 스타일을 적용
::first-letter 지정 요소의 첫 번째 글자에 스타일을 적용, 이 때 해당 요소는반드시 첫 번째 줄에 있어야함
::before 지정 요소의 앞에 스타일을 넣을 수 있음
::after 지정 요소의 뒤에 스타일을 넣을 수 있음

 

저작자표시 비영리 동일조건 (새창열림)

'HTML, CSS, JavaScript' 카테고리의 다른 글

[CSS] 이미지 & 그라데이션으로 배경 꾸미기  (0) 2025.02.24
[CSS] 레이아웃 구성 CSS 박스 모델  (0) 2025.02.23
[CSS] 텍스트 관련 스타일  (2) 2025.01.20
[CSS] CSS - 글꼴 설정하기  (2) 2025.01.16
[CSS] CSS의 기본  (5) 2025.01.14
'HTML, CSS, JavaScript' 카테고리의 다른 글
  • [CSS] 이미지 & 그라데이션으로 배경 꾸미기
  • [CSS] 레이아웃 구성 CSS 박스 모델
  • [CSS] 텍스트 관련 스타일
  • [CSS] CSS - 글꼴 설정하기
BGK97
BGK97
사용자 입장에서 한번 더 생각하는 개발자로 성장하고 싶은 사람입니다.
  • BGK97
    꾸준히, 열심히
    BGK97
  • 전체
    오늘
    어제
    • 분류 전체보기 (111)
      • 알고리즘 (73)
      • 컴퓨터 구조와 운영 체제(책) (8)
      • 네트워크 (5)
      • React (10)
      • 경험한 에러들 (3)
      • HTML, CSS, JavaScript (8)
      • 자료구조 (1)
      • 이것이 컴퓨터 과학이다(책) (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
BGK97
[CSS] CSS 고급 선택자
상단으로

티스토리툴바