๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

์„ ํƒ์ž(Selector) - 1ํŽธ

โ—๏ธ ํ•ด๋‹น ๊ธ€์€ ํŒจ์ŠคํŠธ์บ ํผ์Šค - ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ๊ฐ•์˜์—์„œ HTML & CSS, SASS(SCSS) Part์˜ ๋ฐ•์˜์›… ๊ฐ•์‚ฌ๋‹˜์˜ ๊ฐ•์˜์ž๋ฃŒ๋ฅผ ์ •๋ฆฌํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์„ ํƒ์ž(Basic Selectors)#

์ „์ฒด ์„ ํƒ์ž(Universal Selector)#

๋ชจ๋“  ์š”์†Œ๋ฅผ ์„ ํƒ

* {    color: red;}
<div>    <!--์„ ํƒ-->    <ul>        <!--์„ ํƒ-->        <li>์‚ฌ๊ณผ</li>        <!--์„ ํƒ-->        <li>๋”ธ๊ธฐ</li>        <!--์„ ํƒ-->        <li>์˜ค๋ Œ์ง€</li>        <!--์„ ํƒ-->    </ul>    <div>๋‹น๊ทผ</div>    <!--์„ ํƒ-->    <p>ํ† ๋งˆํ† </p>    <!--์„ ํƒ-->    <span>์˜ค๋ Œ์ง€</span    ><!--์„ ํƒ--></div>

ํƒœ๊ทธ ์„ ํƒ์ž(Type Selector)#

๊ฐ™์€ ํƒœ๊ทธ ์ด๋ฆ„์„ ๊ฐ€์ง„ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์„ ํƒ

li {    color: red;}
<div>    <ul>        <li>์‚ฌ๊ณผ</li>        <!--์„ ํƒ-->        <li>๋”ธ๊ธฐ</li>        <!--์„ ํƒ-->        <li>์˜ค๋ Œ์ง€</li>        <!--์„ ํƒ-->    </ul>    <div>๋‹น๊ทผ</div>    <p>ํ† ๋งˆํ† </p>    <span>์˜ค๋ Œ์ง€</span></div>

ํด๋ž˜์Šค ์„ ํƒ์ž(Class Selector)#

๊ฐ™์€ class ์†์„ฑ์˜ ๊ฐ’์„ ๊ฐ€์ง„ ๋ชจ๋“  ์š”์†Œ ์„ ํƒ

.orange {    color: red;}
<div>    <ul>        <li>์‚ฌ๊ณผ</li>        <li>๋”ธ๊ธฐ</li>        <li class="orange">์˜ค๋ Œ์ง€</li>        <!--์„ ํƒ-->    </ul>    <div>๋‹น๊ทผ</div>    <p>ํ† ๋งˆํ† </p>    <span class="orange">์˜ค๋ Œ์ง€</span>    <!--์„ ํƒ--></div>

์•„์ด๋”” ์„ ํƒ์ž(ID Selector)#

๊ฐ™์€ id ์†์„ฑ ๊ฐ’์„ ๊ฐ€์ง„ ์š”์†Œ ์„ ํƒ

#orange {    color: red;}
<div>    <ul>        <li>์‚ฌ๊ณผ</li>        <li>๋”ธ๊ธฐ</li>        <li id="orange" class="orange">์˜ค๋ Œ์ง€</li>        <!--์„ ํƒ-->    </ul>    <div>๋‹น๊ทผ</div>    <p>ํ† ๋งˆํ† </p>    <span class="orange">์˜ค๋ Œ์ง€</span></div>

ํ•œ id ์„ ํƒ์ž ๊ฐ’์€ HTML ๋ฌธ์„œ์— ํ•œ๋ฒˆ๋งŒ ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•œ๋‹ค.


๋ณตํ•ฉ ์„ ํƒ์ž(Combinators)#

์ผ์น˜ ์„ ํƒ์ž(Basic Combinator)#

๋‘ ์„ ํƒ์ž ์กฐ๊ฑด์„ ๋™์‹œ์— ๋งŒ์กฑํ•˜๋Š” ์š”์†Œ ์„ ํƒ

span.orange {    color: red;}
<div>    <ul>        <li>์‚ฌ๊ณผ</li>        <li>๋”ธ๊ธฐ</li>        <li id="orange" class="orange">์˜ค๋ Œ์ง€</li>    </ul>    <div>๋‹น๊ทผ</div>    <p>ํ† ๋งˆํ† </p>    <span class="orange">์˜ค๋ Œ์ง€</span>    <!--์„ ํƒ--></div>

์ž์‹ ์„ ํƒ์ž(Child Combinator)#

์š”์†Œ์˜ ์ž์‹ ์ค‘์—์„œ ์„ ํƒ

ul > .orange {    color: red;}
<div>    <ul>        <li>์‚ฌ๊ณผ</li>        <li>๋”ธ๊ธฐ</li>        <li id="orange" class="orange">์˜ค๋ Œ์ง€</li>        <!--์„ ํƒ-->    </ul>    <div>๋‹น๊ทผ</div>    <p>ํ† ๋งˆํ† </p>    <span class="orange">์˜ค๋ Œ์ง€</span></div>

ํ›„์†(ํ•˜์œ„) ์„ ํƒ์ž(Descendant Combinator)#

์š”์†Œ์˜ ํ›„์†(ํ•˜์œ„)์ธ ์š”์†Œ ์ค‘์—์„œ ์„ ํƒ

div .orange {    color: red;}
<div>    <ul>        <li>์‚ฌ๊ณผ</li>        <li>๋”ธ๊ธฐ</li>        <li id="orange" class="orange">์˜ค๋ Œ์ง€</li>        <!--์„ ํƒ-->    </ul>    <div>๋‹น๊ทผ</div>    <p>ํ† ๋งˆํ† </p>    <span class="orange">์˜ค๋ Œ์ง€</span>    <!--์„ ํƒ--></div>

์ธ์ ‘ ํ˜•์ œ ์„ ํƒ์ž(Adjacent Sibling Combinator)#

์š”์†Œ์˜ ๋‹ค์Œ(next) ํ˜•์ œ ์š”์†Œ ํ•˜๋‚˜๋ฅผ ์„ ํƒ

/* .orange์˜ ๋‹ค์Œ์— ์žˆ๋Š” li ํ•˜๋‚˜๋งŒ ์„ ํƒ */.orange + li {    color: red;}
<ul>    <li>๋”ธ๊ธฐ</li>    <li>์ˆ˜๋ฐ•</li>    <li class="orange">์˜ค๋ Œ์ง€</li>    <li>๋ง๊ณ </li>    <!--์„ ํƒ-->    <li>์‚ฌ๊ณผ</li></ul>

์ผ๋ฐ˜ ํ˜•์ œ ์„ ํƒ์ž(General Sibling Combinator)#

์š”์†Œ์˜ ๋‹ค์Œ(next)์˜ ๋ชจ๋“  ํ˜•์ œ ์š”์†Œ ์ค‘ ์„ ํƒ

/* .orange์˜ */.orange ~ li {    color: red;}
<ul>    <li>๋”ธ๊ธฐ</li>    <li>์ˆ˜๋ฐ•</li>    <li class="orange">์˜ค๋ Œ์ง€</li>    <li>๋ง๊ณ </li>    <!--์„ ํƒ-->    <li>์‚ฌ๊ณผ</li>    <!--์„ ํƒ--></ul>

CSS์—์„œ์˜ ์ž์‹(child), ํ›„์†(descendant), ํ˜•์ œ(sibling) ์ •์˜

  1. ์ž์‹(child) : ์š”์†Œ์˜ 1๋‹จ๊ณ„(1-depth) ํ•˜์œ„ ์š”์†Œ
  2. ํ›„์†(descendant) : ์š”์†Œ ๋‚ด์˜ ๋ชจ๋“  ํ•˜์œ„ ์š”์†Œ
  3. ํ˜•์ œ(sibling) : ์š”์†Œ์™€ ๊ฐ™์€ ๋‹จ๊ณ„์˜ ์š”์†Œ

Reference#

ํŒจ์ŠคํŠธ์บ ํผ์Šค - ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ๊ฐ•์˜ - HTML & CSS, SASS(SCSS) Part by ParkYoungWoong