๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐ˜์‘ํ˜•

์›น ์Šคํƒ€์ผ๋ง์„ ํ•  ๋•Œ '์–ด๋–ค ์š”์†Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‹ค๋ฅธ ์š”์†Œ๋ฅผ ์„ ํƒํ• ๊นŒ' ํ•˜๋Š” ๋ฌธ์ œ๋Š” ์•„์ฃผ ์ž์ฃผ ๋งˆ์ฃผํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ธ์ ‘ ํ˜•์ œ ๊ฒฐํ•ฉ์ž(+), ์ผ๋ฐ˜ ํ˜•์ œ ๊ฒฐํ•ฉ์ž(~) ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ, ๊ด€๋ จ๋œ ์„ ํƒ์ž๋“ค์„ ์˜ˆ์‹œ์™€ ํ•จ๊ป˜ ์ •๋ฆฌํ•ด์„œ ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ์— ๋ฐ”๋กœ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๊ฒŒ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ์˜ˆ์‹œ์™€ ์ž์ฃผ ์“ฐ์ด๋Š” ํŒจํ„ด, ์‹ค์ „ ํŒ๊นŒ์ง€ ๋‹ด์•˜์œผ๋‹ˆ ๋ณต์‚ฌํ•ด์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•˜์„ธ์š”.

์ธ์ ‘ ํ˜•์ œ(+), ์ผ๋ฐ˜ ํ˜•์ œ(~), ์ž์‹(>), ํ›„์†(์ŠคํŽ˜์ด์Šค) ์„ ํƒ์ž ์ฐจ์ด์™€ ์˜ˆ์ œ ์ •๋ฆฌ. ์‹ค๋ฌด์—์„œ ์ž์ฃผ ์“ฐ์ด๋Š” ํŒจํ„ด๊ณผ ์ฃผ์˜์‚ฌํ•ญ๊นŒ์ง€ ํ•œ ๋ฒˆ์—.


1) ๊ฐœ์š” — ์„ ํƒ์ž(Combinators)๋ž€?

CSS ๊ฒฐํ•ฉ์ž(combinator)๋Š” ๋‘ ๊ฐœ ์ด์ƒ์˜ ์„ ํƒ์ž ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ‘์–ด๋–ค ์š”์†Œ์˜ ๋ฐ”๋กœ ๋‹ค์Œ ํ˜•์ œ’๋ผ๊ฑฐ๋‚˜ ‘์–ด๋–ค ์š”์†Œ์˜ ์ž์‹’ ๊ฐ™์€ ๊ด€๊ณ„๋ฅผ ์„ ํƒํ•  ๋•Œ ์”๋‹ˆ๋‹ค.

 

๋Œ€ํ‘œ์ ์ธ ๊ฒฐํ•ฉ์ž๋“ค : 

๊ณต๋ฐฑ( ) — ํ›„์† ์„ ํƒ์ž(descendant)

> — ์ž์‹ ์„ ํƒ์ž(child)

+ — ์ธ์ ‘ ํ˜•์ œ ๊ฒฐํ•ฉ์ž(adjacent sibling)

~ — ์ผ๋ฐ˜ ํ˜•์ œ ๊ฒฐํ•ฉ์ž(general sibling)

์ด๋ฒˆ ๊ธ€์€ ํŠนํžˆ +์™€ ~์— ์ดˆ์ ์„ ๋งž์ถ”๊ณ , ๊ด€๋ จ ์„ ํƒ์ž๋“ค๊ณผ ์ฐจ์ด๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.


2) ์ธ์ ‘ ํ˜•์ œ ๊ฒฐํ•ฉ์ž +

์ •์˜: ๊ฐ™์€ ๋ถ€๋ชจ๋ฅผ ๊ฐ€์ง€๋Š” ํ˜•์ œ ์š”์†Œ ์ค‘ ๋ฐ”๋กœ ๋‹ค์Œ์— ์˜ค๋Š” ์š”์†Œ๋งŒ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

<h2>์ œ๋ชฉ</h2>
<p>์ฒซ ๋ฒˆ์งธ ๋‹จ๋ฝ</p>
<p>๋‘ ๋ฒˆ์งธ ๋‹จ๋ฝ</p>


<style>
h2 + p {
margin-top: 0.5rem;
color: #2b6cb0;
}
</style>

์œ„ ์˜ˆ์ œ์—์„œ h2 + p๋Š” h2 ๋ฐ”๋กœ ๋‹ค์Œ์— ๋‚˜์˜ค๋Š” p ํ•˜๋‚˜๋งŒ ๋Œ€์ƒ์œผ๋กœ ์Šคํƒ€์ผ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋‹จ๋ฝ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

์‹ค์ „ ์‚ฌ์šฉ ์‚ฌ๋ก€

  • ์ œ๋ชฉ ๋ฐ”๋กœ ๋‹ค์Œ ๋‹จ๋ฝ์—๋งŒ ์—ฌ๋ฐฑ์ด๋‚˜ ํฐํŠธ ์Šคํƒ€์ผ์„ ์ฃผ๊ณ  ์‹ถ์„ ๋•Œ
  • ๋ชฉ๋ก ์•„์ด์ฝ˜ ๋ฐ”๋กœ ๋‹ค์Œ์— ์˜ค๋Š” ์„ค๋ช…์—๋งŒ ์Šคํƒ€์ผ์„ ์ ์šฉํ•  ๋•Œ

์ฃผ์˜์‚ฌํ•ญ

๋ฐ”๋กœ ์˜†(๋ฐ”๋กœ ๋‹ค์Œ) ํ˜•์ œ๋งŒ ์„ ํƒํ•˜๋ฏ€๋กœ, h2์™€ p ์‚ฌ์ด์— ๋‹ค๋ฅธ ์š”์†Œ๊ฐ€ ๋ผ์–ด๋“ค๋ฉด ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


3) ์ผ๋ฐ˜ ํ˜•์ œ ๊ฒฐํ•ฉ์ž ~

์ •์˜: ๊ฐ™์€ ๋ถ€๋ชจ๋ฅผ ๊ฐ€์ง€๋Š” ํ˜•์ œ ์š”์†Œ๋“ค ์ค‘ ์„ ํ–‰ ์„ ํƒ์ž ์ดํ›„์— ๋“ฑ์žฅํ•˜๋Š” ๋ชจ๋“  ํ˜•์ œ ์š”์†Œ๋“ค์„ ๋ชจ๋‘ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค(๋‹จ, ์ˆœ์„œ๋Š” ์ค‘์š” — ์•ž์— ์žˆ์–ด๋„ ์„ ํƒ๋˜์ง€ ์•Š์Œ).

<h3>์†Œ์ œ๋ชฉ</h3>
<p>๋‚ด์šฉ A</p>
<div>์ค‘๊ฐ„ ๋ฐ•์Šค</div>
<p>๋‚ด์šฉ B</p>


<style>
h3 ~ p {
color: #d53f8c;
}
</style>

 

์œ„ ์˜ˆ์ œ์—์„œ h3 ~ p๋Š” ๋‚ด์šฉ A์™€ ๋‚ด์šฉ B ๋‘˜ ๋‹ค ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. h3 ์ดํ›„์— ๋‚˜ํƒ€๋‚˜๋Š” ๋ชจ๋“  p๊ฐ€ ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค.

์‹ค์ „ ์‚ฌ์šฉ ์‚ฌ๋ก€

  • ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€ ์ดํ›„ ํŽ˜์ด์ง€์—์„œ ํŠน์ • ํƒ€์ž…์˜ ์š”์†Œ๋“ค ์ „์ฒด์— ์Šคํƒ€์ผ์„ ์ฃผ๊ณ  ์‹ถ์„ ๋•Œ
  • ํ† ๊ธ€ ๋ฒ„ํŠผ ์ดํ›„ ๋ชจ๋“  ํ˜•์ œ ์š”์†Œ๋“ค์˜ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ๊ณ  ์‹ถ์„ ๋•Œ

์ฃผ์˜์‚ฌํ•ญ

  • ์„ ํƒ์ž๋Š” ์•ž→๋’ค ๊ด€๊ณ„๋งŒ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค. p ~ h3๋Š” h3 ์•ž์— ์žˆ๋Š” p๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

4) ๊ด€๋ จ ์„ ํƒ์ž์™€ ๋น„๊ต

ํ›„์† ์„ ํƒ์ž(๊ณต๋ฐฑ): nav a — nav ๋‚ด๋ถ€์˜ ๋ชจ๋“  a (๊นŠ์ด์— ์ƒ๊ด€ ์—†์Œ)

์ž์‹ ์„ ํƒ์ž(>): ul > li — ul์˜ ์ง๊ณ„ ์ž์‹์ธ li๋งŒ

์ธ์ ‘ ํ˜•์ œ(+): h2 + p — h2 ๋ฐ”๋กœ ๋‹ค์Œ ํ˜•์ œ p ํ•˜๋‚˜

์ผ๋ฐ˜ ํ˜•์ œ(~): h2 ~ p — h2 ๋‹ค์Œ์— ๋‚˜์˜ค๋Š” ๋ชจ๋“  ํ˜•์ œ p

5) ์‹ค์ „ ์˜ˆ์ œ: FAQ ์Šคํƒ€์ผ ์ปดํฌ๋„ŒํŠธ

<button class="q">์งˆ๋ฌธ 1</button>
<div class="a">๋‹ต๋ณ€ 1</div>
<button class="q">์งˆ๋ฌธ 2</button>
<div class="a">๋‹ต๋ณ€ 2</div>


<style>
.q + .a { display: none; }
.q:focus + .a,
.q[aria-expanded="true"] + .a { display: block; }
</style>

๋ฒ„ํŠผ ๋ฐ”๋กœ ๋‹ค์Œ์— ์˜ค๋Š” ๋‹ต๋ณ€๋งŒ ๋ณด์ด๊ฒŒ ํ•  ๋•Œ +๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด HTML ๊ตฌ์กฐ๋งŒ์œผ๋กœ ๊ฐ„๋‹จํ•œ ํ† ๊ธ€ UI๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


6) ์ž์ฃผ ํ•˜๋Š” ์‹ค์ˆ˜ & ํŒ

  • ํ˜•์ œ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ: ๋ถ€๋ชจ๊ฐ€ ๋‹ค๋ฅด๋ฉด ~๋‚˜ +๋กœ ์„ ํƒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (๋ฐ˜๋“œ์‹œ ๊ฐ™์€ ๋ถ€๋ชจ์—ฌ์•ผ ํ•จ)
  • ๊ณต๋ฐฑ/๊ฐœํ–‰์ด ํ—ท๊ฐˆ๋ฆด ๋•Œ: HTML์—์„œ ๊ณต๋ฐฑ/์ค„๋ฐ”๊ฟˆ์€ ์š”์†Œ ๊ฐ„ ํ…์ŠคํŠธ ๋…ธ๋“œ๋กœ ๋‚จ์ง€๋งŒ, CSS ์„ ํƒ์ž ๊ด€๊ณ„์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹จ, ๋‹ค๋ฅธ ์š”์†Œ๊ฐ€ ์‚ฌ์ด์— ์žˆ๋‹ค๋ฉด +๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ ‘๊ทผ์„ฑ: ์‹œ๊ฐ์ ์œผ๋กœ ํ† ๊ธ€์„ ๊ตฌํ˜„ํ•  ๋•Œ๋Š” aria-expanded ๊ฐ™์€ ์†์„ฑ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ์Šคํฌ๋ฆฐ๋ฆฌ๋” ํ˜ธํ™˜์„ฑ์ด ์ข‹์•„์ง‘๋‹ˆ๋‹ค.

7) ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ(๊ฐ„๋‹จํžˆ)

+์™€ ~๋Š” ์˜ค๋ž˜์ „๋ถ€ํ„ฐ ์ง€์›๋˜์–ด ๋Œ€๋ถ€๋ถ„์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฌธ์ œ์—†์ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

(IE9 ์ด์ƒ์—์„œ ์•ˆ์ •์ ์œผ๋กœ ๋™์ž‘) — ์‹ค์ œ ํ”„๋กœ์ ํŠธ์—์„œ ๊ตฌ์ฒด์ ์ธ ๋ฒ„์ „์ด ํ•„์š”ํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๋ณ„ ํ˜ธํ™˜์„ฑ ํ‘œ๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”.


8) ๋งˆ๋ฌด๋ฆฌ — ์–ธ์ œ ์–ด๋–ค ๊ฑธ ์จ์•ผ ํ• ๊นŒ?

  • ์ œ๋ชฉ ๋ฐ”๋กœ ๋‹ค์Œ ์š”์†Œ ํ•˜๋‚˜๋งŒ ์Šคํƒ€์ผ์„ ์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด +.
  • ํŠน์ • ์š”์†Œ ์ดํ›„์˜ ๊ฐ™์€ ํƒ€์ž… ์ „์ฒด์— ์Šคํƒ€์ผ์„ ์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด ~.
  • **๊ตฌ์กฐ์  ๊ด€๊ณ„(์ž์‹/ํ›„์†)**๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ ํƒํ•˜๋ ค๋ฉด >๋‚˜ ๊ณต๋ฐฑ์„ ์‚ฌ์šฉ.

์›๋ฆฌ๋งŒ ์•Œ๋ฉด HTML ๊ตฌ์กฐ๋งŒ ๋ณ€๊ฒฝํ•ด์„œ ์›ํ•˜๋Š” ์Šคํƒ€์ผ์„ ์‰ฝ๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค๋ฌด์—์„œ๋Š” ์ ‘๊ทผ์„ฑ, ์œ ์ง€๋ณด์ˆ˜์„ฑ, ๊ทธ๋ฆฌ๊ณ  HTML์˜ ์˜๋ฏธ๋ฅผ ํ—ค์น˜์ง€ ์•Š๋Š” ์„ ์—์„œ ์„ ํƒ์ž๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

 

 

๋ฐ˜์‘ํ˜•