결합자
결합자 = combinators. 결합자는 두 가지의 선택자를 입력하여 조금 더 명확하게 선택자를 선택할 수 있다.
결합자
하위 결합자
:
article p. article 요소의 하위 요소인 p 요소들이 모두 적용된다.
자식 결합자
:
article > p. article 요소의 바로 하위 요소인 p 요소에만 적용된다.
인접 형제 결합자
:
h1 + p. li:first-of-type + li. 두 선택자를 분리했을 때 동일한 부모 선택자의 자식으로 첫번째 선택자의 바로 뒤에 오는 선택자가 두번째 선택자인경우 이 결합자가 적용된다.
일반 형제 결합자
:
h1 ~ p. 두 선택자를 분리했을 때 동일한 부모 요소의 자식으로 첫번째 선택자의 뒤에 두번째 선택자가 있는경우 적용된다. 이 때 무조건 바로 뒤에 있지 않아도 적용된다.
하위 결합자
상위 요소의 하위 요소 중 기재해놓은 요소가 맞다면 모두 적용된다.
아래 예시에서, li의 하위 요소 li 선택하여 적용.
기본 예시
-
Item 1
- Subitem A
- Subitem B
-
Item 2
- Subitem A
- Subitem B
CSS
ul.my-things li { margin: 2em; list-style-type: disc; } li li { list-style-type: circle; }
HTML
<ul class="my-things"> <li> <div>Item 1</div> <ul> <li>Subitem A</li> <li>Subitem B</li> </ul> </li> <li> <div>Item 2</div> <ul> <li>Subitem A</li> <li>Subitem B</li> </ul> </li> </ul>
자식 결합자
상위 요소에 포함되는 하위 요소 중 입력된 요소에만 적용된다.
아래 예시에서, div의 하위 span만 선택하여 적용.
기본 예시
Span #1, in the div.Span #2, in the span that’s in the div.
Span #3, not in the div at all.
CSS
span { background-color: aqua; } div > span { background-color: yellow; }
HTML
<div> <span>Span #1, in the div. <span>Span #2, in the span that's in the div.</span> </span> </div> <span>Span #3, not in the div at all.</span>
인접 형제 결합자
+ 를 이용하여 먼저 입력한 요소의 바로 다음 형제 요소를 선택한다.
아래 예시에서, 첫번째 li의 인접 형제 li 선택하여 적용.
기본 예시
- One
- Two!
- Three
CSS
li:first-of-type + li { color: red; }
HTML
<ul> <li>One</li> <li>Two!</li> <li>Three</li> </ul>
일반 형제 결합자
~ 을 이용하여 먼저 입력한 요소의 다음 요소 중 입력한 요소를 선택한다.
아래 예시에서,
기본 예시
This is not red.
Here is a paragraph.
Here is some code.
And here is a red span!
And this is a red span!
More code...
How are you?
Whatever it may be, keep smiling.
Dream big
And yet again this is a red span!
CSS
p ~ span { color: red; }
HTML
<span>This is not red.</span> <p>Here is a paragraph.</p> <code>Here is some code.</code> <span>And here is a red span!</span> <span>And this is a red span!</span> <code>More code...</code> <div> How are you? </div> <p> Whatever it may be, keep smiling. </p> <h1> Dream big </h1> <span>And yet again this is a red span!</span>
참고
MDN Web Docs - CSS 선택자
MDN Web Docs - 하위 결합자
MDN Web Docs - 자식 결합자
MDN Web Docs - 인접 형제 결합자
MDN Web Docs - 일반 형제 결합자
관련 포스트
CSS - 기초 - 기본 틀
CSS - 기초 - 선택자
CSS - 기초 - 결합자 - 현재글
CSS - 기초 - 속성과 속성값