일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 웹 사이트
- ai 감정
- Shadow DOM
- google ai essentials
- 직무 체험
- ai 융합 비즈니스 개발 컨퍼런스
- HTML
- js 웹
- 멋쟁이사자처럼
- 코멘토
- first-child
- ChatGPT
- 스프린트
- 프론트엔드
- 웹 접근성
- Label
- 프론트엔드 js
- 웹 표준
- 회고
- 서울 코엑스 ai 컨퍼런스
- 웹
- 개발자
- web
- CSS
- 성장
- IT
- flex box
- AI
- 스크린 리더
- JavaScript
- Today
- Total
ohjungho 님의 블로그
가상 클래스 : first-child 본문
구조적 가상 클래스
구조적 가상 클래스(structural pseudo classes)는 CSS
에서 id, class 등의 선택자를 사용하지 않고 요소를 선택할 수 있다. 이렇게 하는 이유는 코드를 효율적으로 작성하기 위함이다.
학교에서 수학 문제를 앞에 나와서 풀 사람을 구할 때 선생님께서 이름을 부를 수도 있지만 번호로 부를 때도 있는 것처럼 태그도 id
나 class 같은
이름이 아니라 가상 클래스로 불리는 것이다.
대표적인 구조적 가상 클래스는 first-child
, lats-child
, nth-of-type
, only-of-type
이다.
first-child를 학습할 때 개념에서 혼란이 왔다. 개념 자체는 어렵지 않지만 나는 학습을 할 때 원리와 이해를 바탕으로 하기 때문에 문장을 이해하고 코드를 통해 여러 상황 시나리오들을 통해 학습을 해야 완전한 내 것으로 되었다고 생각하기 때문이다 그래서 2시간 정도 탐구한 것 같다.
first-child의 핵심은 2가지 개념이라고 생각한다. 2가지의 개념을 알아야 first-child를 이해한 거라고 생각한다.
형제 중 첫 번째 요소 선택하기 : first-child
first-child
는 형제 요소 중 첫 번째, 즉 맏이 요소를 나타낸다. 형제 요소를 선택하기 때문에 first-child
로 선택하는 대상은 반드시 부모 요소를 가지고 있어야 한다.
<style>
p:first-child {
color: lime;
}
</style>
주의할 점
띄어쓰기에 주의해야 한다. CSS에서는 띄어쓰기는 자식 요소를 의미하기 때문에 띄어쓰기 없이 p:first-child를 작성하면
형제 p 태그 중 첫 번째 요소를 가리키지만 띄어쓰기를 사용하여 p :first-child를 쓰면 p 태그의 자식 요소 중 첫 번째 요소를 가리킨다.
first-child
는 반드시 부모가 있어야 한다.
- first-child는 부모 안에서 첫 번째 자식 요소를 찾는 선택자이다.
- 만약 부모가 없으면, 비교할 형제 요소도 존재하지 않으므로 first-child라는 개념이 성립되지 않는다.
first-child
를 학습할 때 개념에서 혼란이 왔다. 개념 자체는 어렵지 않지만 나는 학습을 할 때 원리와 이해를 바탕으로 하기 때문에 문장을 이해하고 코드를 통해 여러 상황 시나리오들을 통해 학습을 해야 완전한 내 것으로 되었다고 생각하기 때문이다 그래고 2시간 정도 탐구한 것 같다.
first-child
의 핵심은 2가지 개념이라고 생각한다. 2가지의 개념을 알아야 first-child
를 이해한 거라고 생각한다.
첫 번째 개념 : "형제 요소"를 선택한다는 의미
- "형제 요소"를 선택한다는 의미는 같은 부모를 가진 요소들 중에서 특정한 요소를 선택한다는 뜻이다.
즉, 여러 요소가 하나의 부모 아래에 있을 때 그들 간에는 형제 관계가 성립된다
<div>
<p>첫 아들 오준호</p>
<p>둘 째 오치호</p>
<p>막내 오정호</p>
</div>
p:first-child {
color: blue;
}
- 같은 부모를 가진 요소
div
들 중에서 (특정한=첫 번째) 요소 오준호를 선택한다 여러 p요소가 있지만 하나의 부모 아래에 있으므로 오준호 오치호 오정호는형제 관계
가 성립되고 "형제 요소"를 선택한다는 의미이다.
두 번째 개념 : "반드시 부모 요소를 가져야 한다"는 의미
- "반드시 부모 요소를 가져야 한다"는 의미는 형제 요소들 중 첫 번째 요소를 선택하는 것이기 때문에, 부모 요소가 없으면 형제 관계도 성립되지 않는다.
first-child
선택자가 작동하기 위해서는 부모-자식관계가 있어야 한다는 점이다. 부모 요소 안에서 첫 번째 자식 요소를 선택하는 선택자이기 때문이다.
부모가 없다면 자식이 존재할 수 없고, 따라서 first-child
가 무엇을 선택할지 기준점이 없어진다.
부모가 없으면 형제 관계도 성립되지 않는다. 형제 요소 중 첫 번째 요소를 선택하는 것인데,
형제 요소란 같은 부모를 가진 요소들을 의미한다. 그런데 부모가 없다면?? 형제 요소(오준호, 오치호, 오정호)가 존재할 수 없기 때문에 first-child
가 의미를 갖지 않게 된다.
<p>첫 아들 오준호</p>
<p>둘 째 오치호</p>
p:first-child {
color: blue;
}
위 구조에서는 p
태그들이 부모 요소 없이 독립적으로 존재한다. 하지만 p:first-child
는 선택자는 동작하지 않는다. 부모 요소가 없기 때문에
자식 요소로 간주될 수 없고 부모가 없으므로, "첫아들 오준호"를 지정할 수 없고, 비교할 "형제 요소"도 존재하지 않는다.
body는 암묵적인 부모가 된다.
- 브라우저는 모든 HTML 요소를 body 안에서 렌더링 하므로, 태그가 생략되었더라도 존재하는 것처럼 동작한다.
<body>
<p>첫 아들 오준호</p>
<p>둘 째 오치호</p>
</body>
- 여기서
p
태그들은body
의 자식 요소이므로,first-child
는body
안에서 첫 번째p
태그를 선택하게 된다.
한 문장으로 중요하게 강조하자면,
first-child
는 부모 요소 내에서 첫 번째 자식 요소를 선택하는 선택자이므로, 부모-자식 관계가 성립하지 않는 독립적인 요소들에서는 first-child
선택자가 동작하지 않는다.
'Front-end > HTML,CSS' 카테고리의 다른 글
CSS 애니메이션 (0) | 2025.02.22 |
---|---|
CSS 레이아웃 : 위치 지정 (0) | 2025.01.22 |
CSS 레이아웃 : flex box (0) | 2025.01.09 |
css 배치 속성과 반응형 웹 (1) | 2024.12.31 |
CSS (1) | 2024.12.13 |