본문 바로가기
CSS

CSS 선택자 정리

by 프로랑 2023. 10. 19.
728x90

CSS 선택자(CSS Selector)

CSS 규칙에서 맨 앞에 적어 주는 걸 CSS 선택자라고 부릅니다. 선택자를 사용해서 이 규칙을 어떤 요소들에 적용할지 선택할 수 있습니다.

선택자 {
  선언;
  선언;
  선언;
}

 

선택자 목록

콤마(,)로 선택자를 연결하면 여러 선택자에 같은 규칙을 적용할 수 있습니다.

선택자1,
선택자2 {
  ...
}

 

선택자 붙여 쓰기

여러 조건을 동시에 만족하는 요소를 선택하고 싶다면 선택자를 붙여서 쓸 수 있습니다. 예를 들어서 아래 HTML 코드에 있는 태그를 선택해 볼게요.

<h2 id="mongolia" class="large title">몽골 대자연으로 떠나는 여행</h2> 

예시 1. 아이디 + 클래스

#mongolia.title

예시 2. 클래스 + 클래스

.large.title

예시 3. 태그 + 아이디 + 클래스

h2#mongolia.large.title

 

자식 결합자 (Child Combinator)

오른쪽 꺾쇠로 선택자를 이어 줍니다. 예를 들어서 아래 코드에서 tesla-y-2025.png를 보여 주는 이미지 태그를 선택하려면 .article > img로 선택할 수 있습니다.

<div class="article">
  <img src="tesla-y-2025.png">
  ...
</div>
.article > img {
  width: 100%;
}

 

자손 결합자 (Descendant Combinator)

스페이스(띄어쓰기)로 선택자를 이어 줍니다. 예를 들어서 아래 코드에서 tesla-w-2025.png를 보여주는 이미지 태그를 선택하려면 .article img로 선택할 수 있습니다.

<div class="article">
    <p> 이번에 리뷰해 볼 차량은 테슬라 모델 W 입니다.
      <img src="tesla-w-2025.png">
  </p>
  ...
</div>
.article img {
  width: 100%;
}

 

가상 클래스 (Pseudo-class)

가상 클래스는 의사 클래스, 가짜 클래스라고도 부릅니다. 요소의 상태 같은 걸 선택할 때 사용하는 클래스입니다. 정해진 이름 앞에 콜론(:)을 붙여서 사용합니다. 대표적으로 :hover(마우스를 올렸을 때), :active(클릭한 상태), :visited(방문한 적이 있는 링크), :focus(포커싱 됐을 때)등이 있습니다. 예를 들어서 밑줄이 없는 링크에 마우스를 올렸을 때 밑줄이 생기도록 하려면 :hover를 활용하면 됩니다.

a {
  text-decoration: none;
}

a:hover {
  text-decoration: underline;
}

전체 선택자 (Universal Selector)

* 라는 선택자는 모든 요소를 선택하는 선택자입니다.

모든 요소를 선택하기

* {
  box-sizing: border-box;
}

.gallery의 모든 자식 요소 선택하기

.gallery > * {
  width: 120px;
  height: 90px;
}

 

n번째 자식 선택자(n-th child Selector)

:nth-child()를 사용합니다. 괄호 안에는 숫자나 even, odd, 2n 같은 값이 들어갈 수 있는데요. 혹시 다른 프로그래밍 언어를 쓰신 경험이 있다면 0부터 시작할 거라고 생각하실 수도 있지만, 여기서는 1부터 시작합니다. (첫 번째 자식은 1이고, 세 번째 자식은 3임)

.gallery의 세 번째 자식

.gallery :nth-child(3) { ... }

.gallery의 짝수 번째 자식

.gallery :nth-child(even) { ... }
.gallery :nth-child(2n) { ... }

.gallery 의 홀수 번째 자식

.gallery :nth-child(odd) { ... }
.gallery :nth-child(2n+1) { ... }

특히 첫 번째 자식, 마지막 자식은 아래처럼 선택합니다

.gallery :first-child { ... }
.gallery :last-child { ... }
728x90

'CSS' 카테고리의 다른 글

CSS flex 요소의 크기 정리  (0) 2023.10.20
CSS 스타일 우선순위 정리 (Cascading)  (0) 2023.10.19
CSS의 Display 정리  (1) 2023.10.19
CSS 패딩과 마진 내용 정리  (0) 2023.10.18
CSS 배경 관련 속성 정리  (0) 2023.10.18