CSS 선택자(CSS Selector)
CSS 규칙에서 맨 앞에 적어 주는 걸 CSS 선택자라고 부른다.
선택자를 사용해서 이 규칙을 어떤 요소들에 적용할지 선택할 수 있다.
선택자 {
선언;
선언;
선언;
}
선택자 목록
콤마(,)로 선택자를 연결하면 여러 선택자에 같은 규칙을 적용할 수 있다.
선택자1,
선택자2 {
...
}
선택자 붙여 쓰기
여러 조건을 동시에 만족하는 요소를 선택하고 싶다면 선택자를 붙여서 쓸 수 있다.
// HTML
<h2 id="mongolia" class="large title">몽골 대자연으로 떠나는 여행</h2>
// CSS
예시 1. 아이디 + 클래스
#mongolia.title
예시 2. 클래스 + 클래스
.large.title
예시 3. 태그 + 아이디 + 클래스
h2#mongolia.large.title
자식 결합자 (Child Combinator)
오른쪽 꺾쇠로 선택자를 이어 준다.
아래 코드에서 tesla-y-2025.png를 보여 주는 이미지 태그를 선택하려면 .article > img로 선택할 수 있다.
// HTML
<div class="article">
<img src="tesla-y-2025.png">
...
</div>
// CSS
.article > img {
width: 100%;
}
자손 결합자 (Descendant Combinator)
스페이스(띄어쓰기)로 선택자를 이어 준다.
아래 코드에서 tesla-w-2025.png를 보여주는 이미지 태그를 선택하려면 .article img로 선택할 수 있다.
// HTML
<div class="article">
<p> 이번에 리뷰해 볼 차량은 테슬라 모델 W 입니다.
<img src="tesla-w-2025.png">
</p>
...
</div>
// CSS
.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 { ... }
'프론트엔드 > HTML 및 CSS' 카테고리의 다른 글
[HTML] 시맨틱 태그 (0) | 2023.11.19 |
---|---|
[HTML] <input> 태그 정리 (0) | 2023.11.18 |
[CSS] Display 정리 (0) | 2023.11.15 |
[CSS] 박스 모델 (0) | 2023.11.01 |
[CSS] CSS 배경 관련 속성 (2) | 2023.10.28 |