패스잇
프론트엔드 개발 · 중급

CSS에서 선택자의 명시도(Specificity)는 어떻게 계산되며, 이를 효과적으로 관리하여 스타일 충돌을 피하고 원하는 스타일을 적용하는 방법은 무엇인가요? `!important`의 사용은 언제 권장되며, 어떤 부작용이 있을 수 있나요?

힌트 · 선택자 유형(인라인, ID, 클래스/속성/가상클래스, 태그/가상요소)에 따른 점수 계산 방식을 설명하고, `!important`가 가진 강제성과 남용 시 유지보수 어려움을 언급하세요.

명시도가중치인라인 스타일ID 선택자!important

모범답안

CSS에서 선택자 명시도는 스타일 규칙이 얼마나 구체적인지를 나타내는 척도입니다. 브라우저는 명시도가 높은 규칙을 우선 적용하여 스타일 충돌을 해결합니다.

명시도는 다음과 같이 계산됩니다. 인라인 스타일 > ID 선택자 > 클래스/속성/가상 클래스 선택자 > 태그/가상 요소 선택자 순으로 가중치가 높습니다. 같은 유형의 선택자가 많을수록 명시도는 높아집니다.

스타일 충돌을 피하려면 선택자를 최대한 간결하게 유지하고, 불필요한 중첩을 피하는 것이 좋습니다. CSS 변수나 클래스 명명 규칙을 활용하여 일관성을 유지하는 것도 중요합니다.

!important는 특정 스타일 규칙을 강제로 적용하는 데 사용되지만, 남용하면 스타일 관리가 매우 어려워집니다. 정말 필요한 경우 (예: 외부 라이브러리 스타일 오버라이드)에만 제한적으로 사용하는 것이 좋습니다. !important를 과도하게 사용하면 스타일 규칙의 우선순위를 예측하기 어려워져 유지보수성이 떨어지는 코드가 될 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 HTML / CSS 면접 질문

← HTML / CSS 면접 질문 전체 보기