학습
CSS 상속과 우선순위
CSS 상속과 우선순위 — 중급
CSS 상속과 우선순위
1. 도입 (왜 배워야 하는가)
CSS의 상속과 우선순위는 웹 개발에서 매우 중요한 개념입니다. 이는 스타일이 어떻게 적용되는지를 결정하며, 우리가 디자인한 웹 페이지의 일관성을 유지하는 데 중요한 역할을 합니다. 실무에서는 복잡한 스타일을 효과적으로 관리할 수 있게 해주며, 의도치 않은 스타일 충돌을 방지하는 데도 도움을 줍니다.
만약 이 개념을 이해하지 못한다면, 스타일이 제대로 적용되지 않거나, 예기치 않은 결과가 발생할 수 있습니다. 특히, 여러 CSS 파일을 사용하거나, 프레임워크를 도입할 때, 상속과 우선순위 문제로 인해 디버깅이 어려워질 수 있습니다.
2. 핵심 개념 설명
상속
CSS에서 상속은 부모 요소의 스타일이 자식 요소에게 자동으로 전달되는 과정을 의미합니다. 이를 통해 코드의 중복을 줄이고, 일관된 디자인을 유지할 수 있습니다.
비유: 부모가 자녀에게 성격을 물려주는 것과 비슷합니다. 부모가 친절하다면, 자녀도 친절할 가능성이 높습니다.
우선순위 (Specificity)
CSS의 우선순위는 여러 스타일 규칙이 적용될 때 어떤 규칙이 적용될지를 결정하는 기준입니다. 우선순위는 다음과 같은 방식으로 결정됩니다:
- 인라인 스타일 (가장 높은 우선순위)
- ID 선택자
- 클래스, 속성, 또는 가상 클래스 선택자
- 요소 선택자 (가장 낮은 우선순위)
.parent클래스를 가진 요소는 텍스트가 파란색이며, 폰트 크기는 20px입니다..child클래스를 가진 요소는 폰트 크기가 15px으로 설정되어 있습니다..parent클래스가 적용된 요소는 텍스트 색상을 파란색으로 설정합니다..parent클래스가 적용된 요소의 폰트 크기를 20px로 설정합니다..child클래스가 적용된 요소는 폰트 크기를 15px로 설정하여 부모 요소의 폰트 크기보다 작게 만듭니다.- 이 예제에서
.cart-icon은 아이콘의 기본 색상과 크기를 설정하며,.cart-item은 상속을 통해 폰트 크기를 부모의 크기로 유지합니다. 이는 장바구니에서 아이템의 일관된 스타일을 유지하는 데 유용합니다. h2는h1의 색상을 상속하여 같은 색상을 유지하지만, 다른 스타일을 적용할 수 있습니다. 이는 제목 간의 계층적 관계를 유지하는 데 도움을 줍니다.h1요소에.special클래스가 적용되면, 텍스트 색상은 빨간색으로 변경됩니다.h1과.special클래스를 동시에 사용하는 경우, 빨간색이 적용됩니다.color: inherit;를 사용하여 부모의 색상을 그대로 유지할 수 있습니다.- CSS의 상속은 부모 요소의 스타일이 자식 요소에게 전달되는 과정입니다.
- 우선순위는 여러 규칙이 있을 때 어떤 규칙이 적용될지를 결정하는 기준입니다.
- 상속과 우선순위를 잘 이해하면 코드의 재사용성과 유지보수성을 높일 수 있습니다.
- 다음에 학습하면 좋은 주제: CSS 레이아웃 모델, Flexbox 및 Grid 시스템.
| 우선순위 | 선택자 종류 |
|---|---|
| 1 | 인라인 스타일 |
| 2 | ID 선택자 |
| 3 | 클래스/속성 선택자 |
| 4 | 요소 선택자 |
3. 기본 코드 예제
/ 부모 요소 스타일 /
.parent {
color: blue; / 부모 요소의 텍스트 색상 /
font-size: 20px; / 부모 요소의 폰트 크기 /
}
/ 자식 요소 스타일 /
.child {
font-size: 15px; / 자식 요소의 폰트 크기 /
}
실행 결과
부모 요소의 텍스트는 파란색이며, 자식 요소의 텍스트는 부모의 색상인 파란색을 상속받지만, 폰트 크기는 15px로 줄어듭니다.
코드 한 줄씩 동작 설명
4. 실전 활용 예제
예제 1: 쇼핑몰의 장바구니
/ 장바구니 아이콘 스타일 /
.cart-icon {
color: green; / 아이콘 색상 /
font-size: 24px; / 아이콘 크기 /
}
/ 장바구니 아이템 스타일 /
.cart-item {
font-size: inherit; / 부모의 폰트 크기를 상속받음 /
color: black; / 아이템 색상 /
}
예제 2: 블로그 포스트 제목
/ 제목 스타일 /
h1 {
color: red; / 제목 색상 /
}
/ 하위 제목 스타일 /
h2 {
color: inherit; / 부모 제목 색상 상속 /
}
5. 흔한 실수와 주의사항
실수 1: 선택자 우선순위 잘못 이해하기
잘못된 코드
h1 {
color: blue; / 우선순위가 낮음 /
}
.special {
color: red; / 우선순위가 높음 /
}
올바른 코드
h1.special {
color: red; / 더 높은 우선순위 /
}
실수 2: 상속을 잊고 스타일 지정하기
잘못된 코드
.child {
color: green; / 부모의 색상을 무시함 /
}
올바른 코드
.child {
color: inherit; / 부모의 색상을 상속받음 /
}