๐Ÿ“ƒ ํ”„๋ก ํŠธ์—”๋“œ ์ธํ„ฐ๋ทฐ ๋ฌธ์ œ ๋‹ตํ•ด๋ณด๊ธฐ #3 CSS ์„ ํƒ์ž ํŠน์ •์„ฑ

Jake Seoยท2020๋…„ 6์›” 3์ผ
3
post-thumbnail

๐Ÿ“ƒ ํ”„๋ก ํŠธ์—”๋“œ ์ธํ„ฐ๋ทฐ ๋ฌธ์ œ ๋‹ตํ•ด๋ณด๊ธฐ #3 CSS ์„ ํƒ์ž ํŠน์ •์„ฑ

Prologue

๊นƒํ—ˆ๋ธŒ๋ฅผ ๋Œ์•„๋‹ค๋‹ˆ๋‹ค๊ฐ€ ์˜ˆ์ „์— ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ธํ„ฐ๋ทฐ ์งˆ๋ฌธ์ด๋ผ๋Š” ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋ณธ์ ์ด ์žˆ๋‹ค. ์‚ฌ์‹ค ๊ทธ ๋‹น์‹œ์—๋Š” ๊ทธ๋ƒฅ ์Šคํƒ€๋งŒ ๋ˆŒ๋Ÿฌ๋†“๊ณ  ํฐ ๊ด€์‹ฌ์ด ์—†์—ˆ์ง€๋งŒ ์ง€๊ธˆ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ํ’€์–ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ๋งŽ์€ ๋‹ต๋“ค์ด ์ด๋ฏธ ์ด ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์ž‘์„ฑ๋˜์–ด ์žˆ๊ธด ํ•œ๋ฐ, ์ž‘์„ฑ๋˜์ง€ ์•Š์€ ๊ฒƒ๋“ค๋„ ์žˆ๊ณ  ๋‚ด ๋‹ต์ด๋ž‘ ๋ชจ๋ฒ”๋‹ต์•ˆ์„ ๋น„๊ตํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์„œ ํ•œ๋ฒˆ ํ’€์–ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ์„ ์ •

๊ธฐ์กด ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—๋Š” ๋ฌธ์ œ์˜ ๋ถ„๋ฅ˜๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

  1. General Questions
  2. HTML Questions
  3. CSS Questions
  4. JS Questions
  5. Accessibility Questions (external link)
  6. Testing Questions
  7. Performance Questions
  8. Network Questions
  9. Coding Questions
  10. Fun Questions

๋งค์ผ 1๊ฐ€์ง€์”ฉ ๋Œ์•„๊ฐ€๋ฉฐ ํ’€ ๊ฑด๋ฐ, General Questions ํ•ญ๋ชฉ์—์„œ ๋„ˆ๋ฌด ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋Š” ํ’€์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. ๋„ˆ๋ฌด ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ์˜ ์ •์˜๋Š” ์‚ฌ๋žŒ๋งˆ๋‹ค ๋‹ต์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ด๋ฅผํ…Œ๋ฉด...

What did you learn yesterday/this week? (์–ด์ œ/์ด๋ฒˆ์ฃผ์— ๋ฌด์—‡์„ ๋ฐฐ์› ๋‚˜์š”)
What excites or interests you about coding? (๋ฌด์—‡์ด ๋‹น์‹ ์„ ์ฝ”๋”ฉํ•˜๊ณ  ์‹ถ๊ฒŒ ๋งŒ๋“œ๋‚˜์š”?)
What is a recent technical challenge you experienced and how did you solve it?(์ตœ๊ทผ์— ๊ฒช์€ ๊ธฐ์ˆ ์ ์ธ ์–ด๋ ค์›€๊ณผ ๊ทธ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”)

์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์€ ๋‹ต๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋Ÿฐ ๋ฌธ์ œ๋Š” ๊ทธ๋•Œ๊ทธ๋•Œ ๋‹ต์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

๋‚˜์˜ ๋‹ต๋ณ€์€ ๋†’์€ ํ™•๋ฅ ๋กœ ํ‹€๋ฆด ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ์•„๋‹ˆ๋ฉด ๋งž๊ฒŒ ๊ฐ€๋‹ค๊ฐ€ ์ค‘๊ฐ„์— ์ด์ƒํ•œ ๊ธธ๋กœ ๋น ์งˆ ์ˆ˜๋„ ์žˆ๋‹ค. ๋Œ“๊ธ€์— ์ž์‹ ๋งŒ์˜ ๋‹ต์„ ์˜ฌ๋ ค์ฃผ๋ฉด ๋งค์šฐ ๊ณ ๋งˆ์šธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Q: CSS ์„ ํƒ์ž์˜ ํŠน์ •์„ฑ์€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋‚˜์š”?

์›๋ฌธ : What is CSS selector specificity and how does it work?

CSS ์„ ํƒ์ž ํŠน์ •์„ฑ์€ ์–ด๋– ํ•œ ์Šคํƒ€์ผ์ด ์—˜๋ฆฌ๋จผํŠธ์— ์ ์šฉ๋  ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์ผ์ข…์˜ ๊ทœ์น™์ž…๋‹ˆ๋‹ค. ๋” ๋†’์€ ์ ์ˆ˜์˜ CSS ์Šคํƒ€์ผ์ด ์—˜๋ฆฌ๋จผํŠธ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ฑฐ๋‚˜ ์ดํ•ดํ•จ์—๋„ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด !important๋ฅผ ๋‚จ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

CSS ์„ ํƒ์ž ๋‚˜๋ˆ„๊ธฐ

๋จผ์ € ๋‚˜๋ˆ„์ž๋ฉด 3๊ฐ€์ง€ ์ข…๋ฅ˜์˜ CSS ์„ ํƒ์ž๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํƒ€์ž… ์„ ํƒ์ž์™€ Pseudo ์—˜๋ฆฌ๋จผํŠธ
// Type selectors
h1 { ... }

// Pseudo elements
::before { ... }
  • ํด๋ž˜์Šค ์„ ํƒ์ž, ์†์„ฑ ์„ ํƒ์ž, ์Šˆ๋„ ํด๋ž˜์Šค
// Class selector
.cat { ... }

// Attribute selectors
[type="radio"] { ... }

// Pseudo classes
:hover { ... }
  • ID ์„ ํƒ์ž
// ID selectors
# cat { ... }
  • ๊ธฐํƒ€ ์ถ”๊ฐ€์ ์ธ Rule๋“ค
    - ์ „์ฒด ์„ ํƒ์ž(*), ์ฝค๋น„๋„ค์ดํ„ฐ(>, +, ...), ๋ถ€์ • ์Šˆ๋„ ํด๋ž˜์Šค (:not)๋Š” CSS ํŠน์ •์„ฑ์— ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์„ ๊ฐ–์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์•ˆ์— ๋‚ด์žฌ๋œ ์†์„ฑ๋“ค์€ ์Šˆ๋„ ํด๋ž˜์Šค๊ฐ€ ๊ฐ–๋Š” ํŠน์ •์„ฑ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    - HTML ์—˜๋ฆฌ๋จผํŠธ ๋‚ด๋ถ€์— ์ธ๋ผ์ธ ์†์„ฑ๋“ค์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ข‹์€ ๊ด€ํ–‰์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋˜๋„๋ก์ด๋ฉด ์Šคํƒ€์ผ์€ ํ—ท๊ฐˆ๋ฆฌ์ง€ ์•Š๋„๋ก ํ•œ ๊ณณ์— ์ •์˜ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
    - !important๋Š” ๋งค์šฐ ์•ˆ์ข‹์€ ๊ด€ํ–‰์ž…๋‹ˆ๋‹ค. CSS์ฝ”๋“œ์˜ ๋””๋ฒ„๊ทธ๋ฅผ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‹ค๋งŒ, Bootstrap๊ณผ ๊ฐ™์€ CSS framework๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ์Šคํƒ€์ผ์„ overrideํ•˜๊ธฐ ์œ„ํ•ด !important๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋‚˜์œ ๊ด€ํ–‰์œผ๋กœ ์—ฌ๊ฒจ์ง€์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

์„ ํƒ์ž ํŠน์ •์„ฑ์˜ ์šฐ์„ ์ˆœ์œ„ ๊ณ„์‚ฐํ•˜๊ธฐ

์ˆœ์œ„๋ฅผ ๋‚˜์—ดํ•˜์ž๋ฉด,

  1. ์ธ๋ผ์ธ ์Šคํƒ€์ผ ์†์„ฑ (HTML์— ์ง์ ‘ style์„ ์ ์šฉํ•œ ์†์„ฑ)
  2. ID ์…€๋ ‰ํ„ฐ
  3. ํด๋ž˜์Šค, ์Šˆ๋„ํด๋ž˜์Šค ์†์„ฑ ์…€๋ ‰ํ„ฐ
  4. ์—˜๋ฆฌ๋จผํŠธ ์…€๋ ‰ํ„ฐ

์ˆœ์œผ๋กœ ํŠน์ •์„ฑ(Specifity)์„ ๊ฐ€์ ธ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋ ˆํผ๋Ÿฐ์Šค

https://dev.to/emmabostian/css-specificity-1kca
https://designshack.net/articles/css/what-the-heck-is-css-specificity/

profile
ํ’€์Šคํƒ ์›น๊ฐœ๋ฐœ์ž๋กœ ์ผํ•˜๊ณ  ์žˆ๋Š” Jake Seo์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ Jake Seo๋ผ๋Š” ๋‹‰๋„ค์ž„์„ ๋งŽ์ด ์”๋‹ˆ๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ: Javascript, React ๋ฐฑ์—”๋“œ: Spring Framework์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€