CSS로 스타일을 지정하는 작업을 하다 보면 간혹 형제 요소들 중 하나의 요소에만 다른 스타일을 적용할 필요가 생깁니다.
이런 경우 CSS에서 :nth-child, :first-child, :last-child, :not 등의 의사 클래스를 활용하면 간단하게 형제 요소들 중 특정 요소들을 지정해서 스타일을 적용할 수 있습니다.
오늘 연습할 HTML 문서의 구조와 기본 스타일은 아래와 같습니다.
HTML
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<title>CSS n번째 요소 선택하기 연습</title>
<link rel="styleSheet" href="./style.css" />
</head>
<body>
<div id="arrow-container">
<div class="arrow">
⬇️
</div>
<div class="arrow">
⬇️
</div>
<div class="arrow">
⬇️
</div>
<div class="arrow">
⬇️
</div>
<div class="arrow">
⬇️
</div>
<div class="arrow">
⬇️
</div>
<div class="arrow">
⬇️
</div>
</div>
</body>
</html>
CSS(기본 스타일)
#arrow-container {
display: flex;
flex-direction: row;
margin: 50px 0;
}
.arrow {
font-size: 32px;
margin-left: 10px;
}
예시 사진은 아래와 같습니다.
:nth-child
사용 방식
선택자:nth-child(인덱스 or 패턴 or 키워드)
특징
- 인덱스, 패턴, 또는 키워드에 맞는 요소를 지정할 때 사용합니다.
- 인덱스는 1번부터 시작합니다. 즉, 인덱스 1은 첫 번째 요소를 의미합니다.
- 패턴에는 함수 식을 사용할 수 있습니다. 구조는 An+B 형식을 따릅니다.
- A: 정수 인덱스 증감량
- B: 정수 오프셋
- n: 0 이상의 모든 양의 정수
- 키워드에는 odd와 even이 속합니다.
- odd: 홀수번째 요소를 의미합니다.
- even: 짝수번째 요소를 의미합니다.
인덱스를 사용한 경우
/* 첫 번째 요소에 스타일 지정 */
.arrow:nth-child(1) {
color: tomato;
}
/* 네 번째 요소에 스타일 지정 */
.arrow:nth-child(4) {
color: tomato;
}
/* 여섯 번째 요소에 스타일 지정 */
.arrow:nth-child(6) {
color: tomato;
}
기본 스타일 코드에 위의 코드를 추가시키면 화면은 아래처럼 변합니다.
패턴을 사용한 경우
/* 패턴이 3n+1이므로, 1, 4, 7, 10... 순으로 스타일이 지정 */
.arrow:nth-child(3n+1) {
color: tomato;
}
기본 스타일 코드에 위의 코드를 추가시키면 화면은 아래처럼 변합니다.
더 다양한 예시는 여기서 확인할 수 있습니다.
키워드를 사용한 경우
/* 홀수 번째 요소에 스타일 지정 */
.arrow:nth-child(odd) {
color: tomato;
}
기본 스타일 코드에 위의 코드를 추가시키면 화면은 아래처럼 변합니다.
:first-child와 :last-child
사용 방식
선택자:first-child
선택자:last-child
특징
- :first-child는 형제 요소들 중 첫 번째 요소를 지정할 때 사용된다.
- :last-child는 형제 요소들 중 마지막 요소를 지정할 때 사용된다.
- 첫 번째 요소(또는 마지막 요소)에만 특정 스타일(ex. margin)을 지정할 때 활용할 수 있다.
:first-child
/* 첫 번째 요소에 스타일 지정 */
.arrow:first-child {
color: tomato;
}
기본 스타일 코드에 위의 코드를 추가시키면 화면은 아래처럼 변합니다.
:last-child
/* 마지막 요소에 스타일 지정 */
.arrow:last-child {
color: tomato;
}
기본 스타일 코드에 위의 코드를 추가시키면 화면은 아래처럼 변합니다.
:not
사용 방식
선택자1:not(선택자2)
특징
- 선택자1 중 선택자2에 속하지 않는 요소를 지정할 때 사용된다.
- :first-child(또는 :last-child)와 같이 활용하면 첫 번째(또는 마지막 번째)를 제외한 요소들을 지정할 때 활용할 수 있다.
/* 첫 번째 요소를 제외한 모든 요소에 스타일 지정 */
.arrow:not(:first-child) {
color: tomato;
}
기본 스타일 코드에 위의 코드를 추가시키면 화면은 아래처럼 변합니다.
----
<추가적으로 공부할 내용>
nth-of-type(n)
참고 자료
읽어 주셔서 감사합니다 :)
잘못된 부분이 있다면 댓글로 편히 알려주세요!