프론트엔드 개발 · 중급
CSS 가상 클래스(Pseudo-classes)와 가상 요소(Pseudo-elements)의 차이점을 설명하고, 각각을 실제 웹 개발에서 어떤 목적으로 활용할 수 있는지 2가지 이상의 구체적인 예시를 들어 설명해주세요.
힌트 · 가상 클래스는 특정 상태를, 가상 요소는 특정 부분을 선택한다는 점을 구분하고, `:hover`, `:nth-child`와 `::before`, `::after` 등의 사용 사례를 제시하세요.
가상 클래스가상 요소선택자DOM스타일 적용
모범답안
면접관님, CSS 가상 클래스와 가상 요소는 웹 페이지의 특정 상태나 부분을 선택하여 스타일을 적용하는 데 사용됩니다.
가상 클래스는 요소의 특정 상태를 선택합니다. 예를 들어 :hover는 마우스가 올라갔을 때, :nth-child(n)는 n번째 자식 요소를 선택합니다. 링크에 마우스를 올렸을 때 색상을 변경하거나, 테이블 행에 번갈아 다른 배경색을 적용하는 데 활용할 수 있습니다.
가상 요소는 요소의 특정 부분을 선택합니다. ::before와 ::after는 요소의 앞이나 뒤에 가상의 요소를 생성하여 스타일을 적용합니다. 텍스트 앞에 아이콘을 추가하거나, 인용구의 시작과 끝에 따옴표를 넣는 데 유용합니다. 가상 요소는 DOM에 실제로 존재하지 않기 때문에 HTML 구조를 변경하지 않고 스타일을 추가할 수 있다는 장점이 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 HTML / CSS 면접 질문
- CSS 박스 모델(Box Model)에서 `content-box`와 `border-box`의 차이점을 설명하고, 실제 웹 개발에서 `box-sizing` 속성을 어떻게 활용하여 레이아웃 문제를 해결할 수 있는지 구체적인 예를 들어 설명해주세요.
- Flexbox와 CSS Grid는 모두 레이아웃을 구성하는 강력한 도구입니다. 두 기술의 주요 차이점은 무엇이며, 각각 어떤 상황에서 더 적합하게 사용될 수 있는지 구체적인 사용 사례를 들어 설명해주세요.
- CSS `position` 속성 중 `static`이 아닌 다른 값을 가질 때 형성되는 포지셔닝 컨텍스트(Positioning Context)에 대해 설명하고, `z-index` 속성이 이 컨텍스트 내에서 어떻게 동작하는지 구체적인 예시와 함께 설명해주세요.
- 반응형 웹 디자인(Responsive Web Design)을 구현하기 위한 핵심적인 CSS 기술들을 설명하고, 특히 `viewport` 메타 태그와 미디어 쿼리(Media Queries)를 활용하여 다양한 디바이스와 화면 크기에 대응하는 전략을 구체적으로 설명해주세요.
- Sass나 Less와 같은 CSS 전처리기(CSS Preprocessors)를 사용하는 주된 이점은 무엇이며, 실제 프로젝트에서 어떤 기능(예: 변수, 믹스인, 중첩 등)들을 활용하여 CSS 개발의 효율성과 유지보수성을 높일 수 있는지 설명해주세요.
- 대규모 웹 애플리케이션에서 CSS를 효과적으로 관리하고 확장하기 위한 아키텍처 패턴(예: BEM, SMACSS, OOCSS) 중 하나를 선택하여 설명하고, 해당 패턴을 실제 프로젝트에 적용했을 때의 장점과 한계점을 구체적인 사례와 함께 논해주세요.