λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ‘‍πŸ—¨FRONT-END/🎨CSS

[λ‚ λ§ˆλ‹€ 3λΆ„ CSS] CSS μ„ νƒμž #볡합

by λ…Ήμ°¨λ§›κ°œκ΅¬λ¦¬ 2022. 10. 13.

μ‹œμž‘

μ•„νŒŒνŠΈλ₯Ό κ±΄μ„€ν• λ•Œ 골격을 μ„Έμš°κ³  μΈν…Œλ¦¬μ–΄ 섀계도λ₯Ό 톡해 각 μ§‘μ˜ ν˜Έμˆ˜λ§ˆλ‹€ μ§‘μ˜ λ””μžμΈμ„ μž…νžˆλŠ” 것 처럼

CSS μ„ νƒμžλž€

HTMLλ‘œλΆ€ν„° μ›Ήμ»¨ν…μΈ μ˜ ꡬ쑰(골격)λ₯Ό ν˜•μ„±ν•˜κ³  μ‹œκ°μ μΈ λ””μžμΈκ³Ό λ ˆμ΄μ•„μ›ƒ( λ””μžμΈ )을 ν‘œν˜„ν•˜κΈ°μœ„ν•΄μ„œλŠ”

각 μ§‘μ˜ 호수, ν•œλ§ˆλ””λ‘œ λ””μžμΈ ν•  μœ„μΉ˜λ₯Ό μ„ νƒν•΄μ£ΌλŠ” 섀계도가 μžˆμ–΄μ•Όν•œλ‹€.

μ΄λ•Œ, 섀계도가 CSS μ„ νƒμžμ΄λ‹€.

 

μ„ νƒμžμ˜ μ’…λ₯˜


일치 μ„ νƒμž

일치 μ„ νƒμž(Basic Combinator)λŠ” μž…λ ₯λ˜μ–΄μžˆλŠ” CSS속성을 λͺ¨λ‘ λ™μ‹œμ— λ§Œμ‘±ν•˜λŠ” μš”μ†Œλ₯Ό μ„ νƒν•˜μ—¬

CSS속성을 μ μš©ν•œλ‹€.

 

μ„ νƒμžκ°€ span.red 인 κ²½μš°μ—λŠ” νƒœκ·Έκ°€ <span>μ΄λ©΄μ„œ redλΌλŠ” 클래슀λ₯Ό κ°€μ§€κ³  μžˆμ–΄μ•Ό 적용이 λ©λ‹ˆλ‹€.

μ •ν™•νžˆ λͺ…μ‹œν•  λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.

πŸ’«μ˜ˆμ‹œ

span.red {
  color: red;
}

 


μžμ‹ μ„ νƒμž

μžμ‹ μ„ νƒμž(Child Combinator)λŠ” μ„ νƒμš”μ†Œμ˜ μ§κ³„μžμ‹λ§Œ μ„ νƒν•˜μ—¬ 속성을 μ μš©ν•©λ‹ˆλ‹€.

 

μ„ νƒμžκ°€ ul > .red 이면 ul νƒœκ·Έμ˜ λ°”λ‘œ λ°‘ μžμ†μ—λ§Œ 속성이 μ μš©λ©λ‹ˆλ‹€

πŸ’«μ˜ˆμ‹œ

#container > ul {
  border: 1px solid black;
}
<div id="container">
   <ul>
      <li> List Item
        <ul>
           <li> Child </li>
        </ul>
      </li>
      <li> List Item </li>
      <li> List Item </li>
      <li> List Item </li>
   </ul>
</div>
#container > ul μ„ νƒμžλŠ” idκ°€ container인 div의 직계 μžμ†μΈ ul만 λŒ€μƒμœΌλ‘œ μ‚ΌμŠ΅λ‹ˆλ‹€.
예λ₯Ό λ“€μ–΄ 첫 번째 li의 μžμ‹μΈ List Item의 λ°”λ‘œ λ°‘ul은 λŒ€μƒμ΄ λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

 


ν•˜μœ„(후손) μ„ νƒμž

ν•˜μœ„ μ„ νƒμžλŠ”(Descendant Combinator)후손 μš”μ†Œλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.  '띄어쓰기'κ°€ μ„ νƒμžμ˜ 기호둜 μ‚¬μš©λ©λ‹ˆλ‹€.
div μ½”λ“œ μ•ˆμ— μžˆλŠ” λͺ¨λ“  νƒœκ·Έλ“€ 쀑 gray 클래슀λ₯Ό κ°–κ³  μžˆλŠ” λͺ¨λ“  μ„ νƒμžλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.

 

μ•„λž˜μ™€ 같이 μž‘μ„±ν•˜λ©΄ div클래슀의 후손쀑 gray 클래슀λ₯Ό κ°–κ³  μžˆλŠ” λͺ¨λ“  μš”μ†Œκ°€ μ„ νƒλ˜μ–΄ μ μš©λ©λ‹ˆλ‹€.

πŸ’«μ˜ˆμ‹œ

div .gray {
  color: gray;
}
<div>
  <ul>
    <li>빨간색</li>
    <li>νŒŒλž€μƒ‰</li>
    <li class="gray">νšŒμƒ‰</li> <!-- 선택 -->
  </ul>
  <div>빨간색</div>
  <div>νŒŒλž€μƒ‰</div>
  <span class="gray">νšŒμƒ‰</span> <!-- 선택 -->
</div>
<spna class="gray">νšŒμƒ‰</span>

 


인접 ν˜•μ œ μ„ νƒμž

인접 ν˜•μ œ μ„ νƒμž(Adjacent Sibling Combinator)λŠ” "+"λ₯Ό κΈ°μ€€μœΌλ‘œ μ•žμ˜ μš”μ†Œ λ°”λ‘œ 뒀에 μžˆλŠ” μš”μ†Œλ§Œ 

μ„ νƒν•©λ‹ˆλ‹€.  μ•„λž˜ μ½”λ“œμ—μ„œ orange클래슀 뒀에 μ˜€λŠ” 첫 번째 liνƒœκ·Έ( <li>망고</li> )만 μ˜€λ Œμ§€μƒ‰μ΄ λ©λ‹ˆλ‹€.

 

πŸ’«μ˜ˆμ‹œ

.orange + li {
  color: orange;
}
<ul>
  <li>λ”ΈκΈ°</li>
  <li>μˆ˜λ°•</li>
  <li class="orange">μ˜€λ Œμ§€</li>
  <li>망고</li> <!-- 선택 -->
  <li>사과</li>
</ul>

 


 

일반 ν˜•μ œ μ„ νƒμž

일반 ν˜•μ œ μ„ νƒμž(General Sibling Combinator)λŠ” "~"λ₯Ό κΈ°μ€€μœΌλ‘œ μ•žμ˜ μš”μ†Œ λ°”λ‘œ 뒀에 μžˆλŠ” μš”μ†Œ λͺ¨λ‘λ₯Ό 

μ„ νƒν•©λ‹ˆλ‹€. 

μ•„λž˜ μ½”λ“œμ—μ„œ orange 클래슀의 일반 ν˜•μ œλŠ” λ”ΈκΈ°, μˆ˜λ°•, 망고, 사과 λ“±μ΄μ§€λ§Œ "λ‹€μŒ"에 μžˆλŠ” ν˜•μ œλ“€μ΄ μ„ νƒλ˜κΈ° λ•Œλ¬Έμ— 망고와 μ‚¬κ³Όλ§Œ μ„ νƒλ©λ‹ˆλ‹€.

 

πŸ’«μ˜ˆμ‹œ

.orange ~ li {
  color: orange;
}
<ul>
  <li>λ”ΈκΈ°</li>
  <li>μˆ˜λ°•</li>
  <li class="orange">μ˜€λ Œμ§€</li>
  <li>망고</li> <!-- 선택 -->
  <li>사과</li> <!-- 선택 -->
</ul>
728x90