์ด ๊ธ€์€ ํ”„๋ก ํŠธ์—”๋“œ ์ง๋ฌด ๋ฉด์ ‘ ์งˆ๋ฌธ๊ณผ ๊ด€๋ จ๋œ Github ์ €์žฅ์†Œ front-end-interview-handbook ๋ฒˆ์—ญ๋ณธ์œผ๋กœ, ์ €์žฅ์†Œ์— Translations ํด๋”์˜ ๋‚ด์šฉ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.


CSS ์งˆ๋ฌธ #1

ํ”„๋ก ํŠธ์—”๋“œ ๋ฉด์ ‘ ์งˆ๋ฌธ - CSS ์งˆ๋ฌธ์— ๋Œ€ํ•œ ํ•ด์„ค์ž…๋‹ˆ๋‹ค.
Pull Request๋ฅผ ํ†ตํ•œ ์ œ์•ˆ, ์ˆ˜์ • ์š”์ฒญ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

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

๋ธŒ๋ผ์šฐ์ €๋Š” CSS ๊ทœ์น™์˜ ํŠน์ •์„ฑ์— ๋”ฐ๋ผ ์š”์†Œ์— ํ‘œ์‹œํ•  ์Šคํƒ€์ผ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด๋ฏธ ํŠน์ • ์š”์†Œ์™€ ์ผ์น˜ํ•˜๋Š” ๊ทœ์น™์„ ๊ฒฐ์ •ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ผ์น˜ํ•˜๋Š” ๊ทœ์น™๋“ค ๊ฐ€์šด๋ฐ, ๋„ค๊ฐœ์˜ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๊ฐ’ a, b, c, d๋Š” ๋‹ค์Œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ ๊ทœ์น™์— ๋Œ€ํ•ด ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.

  1. a๋Š” ์ธ๋ผ์ธ ์Šคํƒ€์ผ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. ์†์„ฑ์˜ ์„ ์–ธ์ด ์š”์†Œ์˜ ์ธ๋ผ์ธ ์Šคํƒ€์ผ์ด๋ฉด a๋Š” 1์ด๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด 0์ž…๋‹ˆ๋‹ค.
  2. b๋Š” ID ์…€๋ ‰ํ„ฐ์˜ ์ˆ˜์ž…๋‹ˆ๋‹ค.
  3. c๋Š” ํด๋ž˜์Šค, ์†์„ฑ, ๊ฐ€์ƒ ํด๋ž˜์Šค ์„ ํƒ์ž์˜ ์ˆ˜์ž…๋‹ˆ๋‹ค.
  4. d๋Š” ํƒœ๊ทธ, ๊ฐ€์ƒ ์š”์†Œ ์„ ํƒ์ž์˜ ์ˆ˜์ž…๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์ธ ํŠน์ •์„ฑ์€ ์ ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ, ์ปฌ๋Ÿผ๋งˆ๋‹ค ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’๋“ค์˜ ํ–‰๋ ฌ์ž…๋‹ˆ๋‹ค. ์„ ํƒ์ž๋ฅผ ๋น„๊ตํ•˜์—ฌ ๊ฐ€์žฅ ๋†’์€ ํŠน์ •์„ฑ์„ ๊ฐ–๋Š” ํ•ญ๋ชฉ์„ ๊ฒฐ์ •ํ•  ๋•Œ, ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ ์ˆœ์œผ๋กœ ๊ฐ ์—ด์˜ ๊ฐ€์žฅ ๋†’์€ ๊ฐ’์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ b์—ด์˜ ๊ฐ’์€ c์™€ d์—ด์— ์žˆ๋Š” ๊ฐ’์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 0,1,0,0์˜ ํŠน์ •์„ฑ์€ 0,0,10,10์ค‘ ํ•˜๋‚˜๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค.

๋™๋“ฑํ•œ ํŠน์ •์„ฑ์˜ ๊ฒฝ์šฐ: ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๊ทœ์น™์ด ์ค‘์š”ํ•œ ๊ทœ์น™์ž…๋‹ˆ๋‹ค. ์Šคํƒ€์ผ์‹œํŠธ์— ๋™์ผํ•œ ๊ทœ์น™์„ ๋‘ ๋ฒˆ ์ž‘์„ฑํ•œ ๊ฒฝ์šฐ(๋‚ด๋ถ€๋‚˜ ์™ธ๋ถ€์— ๊ด€๊ณ„์—†์ด) ์Šคํƒ€์ผ์‹œํŠธ์˜ ํ•˜์œ„ ๊ทœ์น™์ด ์Šคํƒ€์ผ๋  ์š”์†Œ์— ๋” ๊ฐ€๊นŒ์šฐ๋ฏ€๋กœ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ €๋ผ๋ฉด, ํ•„์š”ํ•˜๋‹ค๋ฉด ์‰ฝ๊ฒŒ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‚ฎ์€ ํŠน์ •์„ฑ ๊ทœ์น™๋“ค์„ ์ž‘์„ฑํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. CSS UI ์ปดํฌ๋„ŒํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ์ž๊ฐ€ !important๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํŠน์ •์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•œ CSS ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ์ด๋ฅผ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํŠน์ •์„ฑ์„ ๋‚ฎ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ์ž๋ฃŒ

[โ†‘] Back to top

Resetting๊ณผ Normalizing CSS์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”? ๋‹น์‹ ์€ ๋ฌด์—‡์„ ์„ ํƒํ•  ๊ฒƒ์ด๋ฉฐ, ๊ทธ ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

  • Resetting - Resetting์€ ์š”์†Œ์˜ ๋ชจ๋“  ๊ธฐ๋ณธ ๋ธŒ๋ผ์šฐ์ € ์Šคํƒ€์ผ์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ: margin, padding, font-size๋Š” ๊ฐ™์€ ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ ์š”์†Œ์— ๋Œ€ํ•œ ์Šคํƒ€์ผ์„ ์žฌ ์„ ์–ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

  • Normalizing - Normalizing๋Š” "๋ชจ๋“  ์Šคํƒ€์ผ์„ ์ œ๊ฑฐ"ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์œ ์šฉํ•œ ๊ธฐ๋ณธ ์Šคํƒ€์ผ์„ ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ผ๋ฐ˜์ ์ธ ๋ธŒ๋ผ์šฐ์ € ์ข…์†์„ฑ์— ๋Œ€ํ•œ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

ํ•„์ž๋Š” ์ €๋งŒ์˜ ์Šคํƒ€์ผ๋ง์„ ๋งŽ์ด ํ•ด์•ผ ํ•˜๊ณ  ๋ณด์กดํ•  ๊ธฐ๋ณธ ์Šคํƒ€์ผ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋„๋ก ๋งค์šฐ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•๋˜์—ˆ๊ฑฐ๋‚˜ ์ž์œ ๋กœ์šด ์‚ฌ์ดํŠธ ๋””์ž์ธํ•ด์•ผํ•  ๋•Œ ๋ฆฌ์…‹์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ์ž๋ฃŒ

[โ†‘] Back to top

float๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜์„ธ์š”.

Float๋Š” CSS ์œ„์น˜์ง€์ • ์†์„ฑ์ž…๋‹ˆ๋‹ค. Float๋œ ์š”์†Œ๋Š” ํŽ˜์ด์ง€์˜ ํ๋ฆ„์˜ ์ผ๋ถ€๊ฐ€ ๋˜๋ฉฐ, ํŽ˜์ด์ง€์˜ ํ๋ฆ„์—์„œ ์ œ๊ฑฐ๋˜๋Š” position: absolute ์š”์†Œ์™€ ๋‹ฌ๋ฆฌ ๋‹ค๋ฅธ ์š”์†Œ(์˜ˆ: ํ”Œ๋กœํŒ… ์š”์†Œ ์ฃผ์œ„๋กœ ํ๋ฅด๋Š” ํ…์ŠคํŠธ)์˜ ์œ„์น˜์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.

CSS clear ์†์„ฑ์€ float ์š”์†Œ์— left/right/both์— ์œ„์น˜ํ•˜๋„๋ก ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถ€๋ชจ ์š”์†Œ์— float ์š”์†Œ๋งŒ ์žˆ์œผ๋ฉด, ๊ทธ ๋†’์ด๋Š” ๋ฌดํšจ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์˜ float ์š”์†Œ ๋‹ค์Œ์— ์žˆ์ง€๋งŒ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋‹ซํžˆ๊ธฐ ์ „์— float๋ฅผ clearํ•˜๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.clearfix๋Š” ์˜๋ฆฌํ•œ CSS ๊ฐ€์ƒ ์„ ํƒ์ž (:after)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ float๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ƒ์œ„ ํด๋ž˜์Šค์— overflow ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋Œ€์‹  ์ถ”๊ฐ€ ํด๋ž˜์Šค clearfix๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋‹ค์Œ ์•„๋ž˜ CSS๋ฅผ ์ ์šฉํ•˜์„ธ์š”:

.clearfix:after {
  content: ' ';
  visibility: hidden;
  display: block;
  height: 0;
  clear: both;
}

๋Œ€์‹ , ๋ถ€๋ชจ ์š”์†Œ์— overflow: auto๋‚˜ overflow: hidden ์†์„ฑ์„ ์ฃผ๋ฉด, ์ž์‹ ์š”์†Œ ๋‚ด๋ถ€์— ์ƒˆ๋กœ์šด ๋ธ”๋ก ํฌ๋งท ์ปจํ…์ŠคํŠธ์„ ์„ค์ •ํ•˜๊ณ  ์ž์‹์„ ํฌํ•จํ•˜๋„๋ก ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ์ž๋ฃŒ

[โ†‘] Back to top

z-index์™€ ์Šคํƒ ์ปจํ…์ŠคํŠธ(stacking context)๊ฐ€ ์–ด๋–ป๊ฒŒ ํ˜•์„ฑ๋˜๋Š”์ง€ ์„ค๋ช…ํ•˜์„ธ์š”.

CSS์˜ z-index์†์„ฑ์€ ๊ฒน์น˜๋Š” ์š”์†Œ์˜ ์Œ“์ž„ ์ˆœ์„œ๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. z-index๋Š” position์— static์ด ์•„๋‹Œ ๊ฐ’์„ ๊ฐ–๋Š” ์š”์†Œ์—๋งŒ ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.

z-index ๊ฐ’์ด ์—†์œผ๋ฉด DOM์— ๋‚˜ํƒ€๋‚˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์š”์†Œ๊ฐ€ ์Œ“์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค(๋™์ผํ•œ ๊ณ„์ธต์—์„œ ๊ฐ€์žฅ ์•„๋ž˜์˜ ๊ฒƒ์ด ๋งจ ์œ„์— ๋ณด์—ฌ์ง‘๋‹ˆ๋‹ค). ์ •์ ์ด์ง€ ์•Š์€(non-static) ์œ„์น˜์ง€์ • ์š”์†Œ(๋ฐ ํ•ด๋‹น ํ•˜์œ„ ์š”์†Œ)๋Š” HTML ๋ ˆ์ด์–ด ๊ตฌ์กฐ์™€ ์ƒ๊ด€์—†์ด ๊ธฐ๋ณธ ์ •์  ์œ„์น˜๋กœ ํ•ญ์ƒ ์š”์†Œ ์œ„์— ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

์Šคํƒ ์ปจํ…์ŠคํŠธ(stacking context)๋Š” ๋ ˆ์ด์–ด๋“ค์„ ํฌํ•จํ•˜๋Š” ์š”์†Œ์ž…๋‹ˆ๋‹ค. ์ง€์—ญ ์Šคํƒ ์ปจํ…์ŠคํŠธ ๋‚ด์—์„œ, ์ž์‹์˜ z-index ๊ฐ’์€ ๋ฌธ์„œ ๋ฃจํŠธ๊ฐ€ ์•„๋‹Œ ํ•ด๋‹น ์š”์†Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์ปจํ…์ŠคํŠธ ์™ธ๋ถ€ ๋ ˆ์ด์–ด(์˜ˆ: ์ง€์—ญ ์Šคํƒ ์ปจํ…์ŠคํŠธ์˜ ํ˜•์ œ ์š”์†Œ)๋Š” ๊ทธ ์‚ฌ์ด์˜ ๋ ˆ์ด์–ด์— ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์š”์†Œ B๊ฐ€ ์š”์†Œ A์˜ ์ƒ๋‹จ์— ์œ„์น˜ํ•˜๋Š” ๊ฒฝ์šฐ, ์š”์†Œ A์˜ ํ•˜์œ„ ์š”์†Œ C๋Š”, ์š”์†Œ C๊ฐ€ ์š”์†Œ B๋ณด๋‹ค z-index๊ฐ€ ๋” ๋†’์€ ๊ฒฝ์šฐ์—๋„ ์š”์†Œ B ๋ณด๋‹ค ์œ„์— ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ฐ๊ฐ์˜ ์Šคํƒ ์ปจํ…์ŠคํŠธ๋Š” ์ž์ฒด์ ์œผ๋กœ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค - ์š”์†Œ์˜ ๋‚ด์šฉ์ด ์Œ“์ธ ํ›„์—๋Š” ์ „์ฒด ์š”์†Œ๋ฅผ ์Šคํƒ ์ปจํ…์ŠคํŠธ์˜ ์Œ“์ธ ์ˆœ์„œ๋กœ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช‡๋ช‡ CSS ์†์„ฑ, opacity๊ฐ€ 1๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜, filter๊ฐ€ none์ด ์ด๊ฑฐ๋‚˜, transform์ด none์ด ์•„๋‹Œ ๊ฒƒ๋“ค์ด ์ƒˆ๋กœ์šด ์Šคํƒ ์ปจํ…์ŠคํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ  ์ž๋ฃŒ

[โ†‘] Back to top

BFC(Block Formatting Context)์™€ ๊ทธ ์ž‘๋™ ๋ฐฉ์‹์„ ์„ค๋ช…ํ•˜์„ธ์š”.

BFC(Block Formatting Context)๋Š” ๋ธ”๋ก ๋ฐ•์Šค๊ฐ€ ๋ฐฐ์น˜๋œ ์›น ํŽ˜์ด์ง€์˜ ์‹œ๊ฐ์  CSS ๋ Œ๋”๋ง์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. float, absolute๋กœ ๋ฐฐ์น˜๋œ ์š”์†Œ, inline-blocks, table-cells, table-caption ๊ทธ๋ฆฌ๊ณ  visible(๊ทธ ๊ฐ’์ด viewport์— ์ „ํŒŒ๋˜์—ˆ์„ ๋•Œ๋Š” ์ œ์™ธ)์ด ์•„๋‹Œ overflow๊ฐ€ ์žˆ๋Š” ์š”์†Œ๋“ค์ด ์ƒˆ๋กœ์šด Block Formatting Context๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

BFC๋Š” ๋‹ค์Œ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์„ ์ถฉ์กฑ์‹œํ‚ค๋Š” HTML ๋ฐ•์Šค์ž…๋‹ˆ๋‹ค:

  • float์˜ ๊ฐ’์ด none์ด ์•„๋‹˜.
  • position์˜ ๊ฐ’์ด static๋„ ์•„๋‹ˆ๊ณ  relative๋„ ์•„๋‹˜.
  • display์˜ ๊ฐ’์ด table-cell, table-caption, inline-block, flex, inline-flex์ž„.
  • overflow์˜ ๊ฐ’์ด visible์ด ์•„๋‹˜.

BFC์—์„œ ๊ฐ ๋ฐ•์Šค์˜ ์™ผ์ชฝ ๋ฐ”๊นฅ ๋ชจ์„œ๋ฆฌ๋Š” ํฌํ•จํ•˜๋Š” ๋ธ”๋ก์˜ ์™ผ์ชฝ ๋ชจ์„œ๋ฆฌ์— ๋‹ฟ์Šต๋‹ˆ๋‹ค(right-to-left ํฌ๋งท์—์„œ๋Š”, ์˜ค๋ฅธ์ชฝ ๋ชจ์„œ๋ฆฌ์— ๋‹ฟ์Œ).

BFC collapse์‹œ์— ์ธ์ ‘ํ•œ ๋ธ”๋ก ๋ ˆ๋ฒจ ๋ฐ•์Šค ์‚ฌ์ด์˜ ์ˆ˜์ง ๋งˆ์ง„. collapsing margins์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์ฝ์–ด๋ณด์„ธ์š”.

์ฐธ๊ณ  ์ž๋ฃŒ

[โ†‘] Back to top

clear ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์–ด๋–ค ๊ฒƒ์ด ์žˆ์œผ๋ฉฐ, ๊ฐ๊ฐ ์–ด๋–ค์ƒํ™ฉ์— ์ ํ•ฉํ•œ๊ฐ€์š”?

  • ๋นˆ div ๋ฐฉ๋ฒ• - <div style="clear:both;"></div>
  • Clearfix ๋ฐฉ๋ฒ• - ์œ„ .clearfix ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  • overflow: auto ๋˜๋Š” overflow: hidden ๋ฐฉ๋ฒ• - ๋ถ€๋ชจ๋Š” ์ƒˆ๋กœ์šด Block Formatting Context๋ฅผ ์„ค์ •ํ•˜๊ณ , ํ™•์žฅ๋œ ์ž์‹์„ ํฌํ•จํ•˜๋„๋กํ•ฉ๋‹ˆ๋‹ค.

๋Œ€๊ทœ๋ชจ์˜ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์œ ์šฉํ•˜๊ฒŒ .clearfix ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ํ•„์š”ํ•œ ๊ณณ์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž์‹์ด ๋ถ€๋ชจ๋ณด๋‹ค ํฌ๊ธฐ๊ฐ€ ๊ฒฝ์šฐ overflow: hidden์€ ์ž์‹์„ ๋ชจ๋‘ ๋ณด์—ฌ์ค„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

[โ†‘] Back to top

CSS ์Šคํ”„๋ผ์ดํŠธ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”? ๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์ด ํŽ˜์ด์ง€๋‚˜ ์‚ฌ์ดํŠธ์— ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

CSS ์Šคํ”„๋ผ์ดํŠธ๋Š” ์—ฌ๋Ÿฌ ์ด๋ฏธ์ง€๋ฅผ ํ•˜๋‚˜์˜ ํฐ ์ด๋ฏธ์ง€๋กœ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์•„์ด์ฝ˜์— ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ˆ (Gmail์—์„œ ์‚ฌ์šฉ)์ž…๋‹ˆ๋‹ค. ๊ตฌํ˜„ ๋ฐฉ๋ฒ•:

  1. ์Šคํ”„๋ผ์ดํŠธ ์ƒ์„ฑ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ด๋ฏธ์ง€๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด ์ ์ ˆํ•œ CSS๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ฐ ์ด๋ฏธ์ง€๋Š” background-image, background-position, background-size ์†์„ฑ์ด ์ •์˜๋œ ํ•ด๋‹น CSS ํด๋ž˜์Šค๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.
  3. ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์œ„ํ•ด, ์š”์†Œ์— ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์žฅ์ :

  • ์—ฌ๋Ÿฌ ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ HTTP ์š”์ฒญ ์ˆ˜๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค(์Šคํ”„๋ผ์ดํŠธ ์‹œํŠธ๋‹น ํ•˜๋‚˜์˜ ๋‹จ์ผ ์š”์ฒญ๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.) ๊ทธ๋Ÿฌ๋‚˜ HTTP2๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ์—ฌ๋Ÿฌ ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ด ๋” ์ด์ƒ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • :hover์˜ ์ƒํƒœ์—์„œ๋งŒ ๋‚˜ํƒ€๋‚˜๋Š” ์ด๋ฏธ์ง€๊ฐ€ ํ•„์š”ํ•  ๋•Œ, ๋‹ค์šด๋กœ๋“œ๋˜์ง€ ์•Š๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋ฏธ๋ฆฌ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ๊นœ๋ฐ•์ž„์ด ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ฐธ๊ณ  ์ž๋ฃŒ

[โ†‘] Back to top

๋ธŒ๋ผ์šฐ์ € ๋ณ„๋กœ ์Šคํƒ€์ผ์ด ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ์–ด๋–ค ์ ‘๊ทผ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•˜๋‚˜์š”?

  • ๋ฌธ์ œ์™€ ๊ทธ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‹๋ณ„ํ•œ ํ›„, ํ•ด๋‹น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‚ฌ์šฉ ์ค‘์ผ ๋•Œ๋งŒ ๋กœ๋“œ๋˜๋Š” ๋ณ„๋„์˜ ์Šคํƒ€์ผ ์‹œํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์„œ๋ฒ„์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฏธ ์ด๋Ÿฌํ•œ ์Šคํƒ€์ผ๋ง ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋Š” Bootstrap ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • autoprefixer๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒค๋” ํ”„๋ฆฌํ”ฝ์Šค๋ฅผ ์ฝ”๋“œ์— ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • Reset CSS ๋˜๋Š” Normalize.css๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

[โ†‘] Back to top

๊ธฐ๋Šฅ์ด ์ œํ•œ๋œ ๋ธŒ๋ผ์šฐ์ €์˜ ํŽ˜์ด์ง€๋Š” ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋‚˜์š”? ์–ด๋–ค ๊ธฐ์ˆ /ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋‚˜์š”?

  • ์šฐ์•„ํ•œ ํ‡ด๋ณด - ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์œ„ํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋™์‹œ์— ๊ทธ๊ฒƒ์ด ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €์—์„œ๋„ ๊ณ„์† ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ๊ตฌ์ถ•๋ฐฉ๋ฒ•.
  • ์ ์ง„์  ํ–ฅ์ƒ - ๊ธฐ๋ณธ ์ˆ˜์ค€์˜ ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์ถ•ํ•˜์ง€๋งŒ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ด๋ฅผ ์ง€์›ํ•  ๊ฒฝ์šฐ ๊ธฐ๋Šฅ์„ ๊ฐ•ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•.
  • caniuse.com์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋Šฅ ์ง€์›์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ์ž๋™ ๋ฒค๋” ํ”„๋ฆฌํ”ฝ์Šค ์‚ฝ์ž…์„ ์œ„ํ•ด Autoprefixer ์‚ฌ์šฉ.
  • Modernizr๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋Šฅ ๊ฐ์ง€.
  • CSS Feature ์ฟผ๋ฆฌ @support ์‚ฌ์šฉ.

[โ†‘] Back to top

์ฝ˜ํ…์ธ ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ์ˆจ๊ธฐ๋Š”(๊ทธ๋ฆฌ๊ณ  screen reader์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š”)๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ์€ Accessibility(a11y)์— ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • visibility: hidden. ํ•˜์ง€๋งŒ, ์š”์†Œ๋Š” ์—ฌ์ „ํžˆ ํŽ˜์ด์ง€์˜ ํ๋ฆ„์— ์—ฌ์ „ํžˆ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • width: 0; height: 0. ์š”์†Œ๊ฐ€ ํ™”๋ฉด์˜ ์–ด๋–ค ๊ณต๊ฐ„๋„ ์ฐจ์ง€ํ•˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ณด์ด์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • position: absolute; left: -99999px. ํ™”๋ฉด ์™ธ๋ถ€์— ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • text-indent: -9999px. ์ด๊ฒƒ์€ block์ธ ์š”์†Œ ๋‚ด์˜ ํ…์ŠคํŠธ์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ. ์˜ˆ๋ฅผ ๋“ค๋ฉด, Schema.org, RDF, JSON-LD๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • WAI-ARIA. ์›น ํŽ˜์ด์ง€์˜ Accessibility๋ฅผ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๋Š” W3C ๊ธฐ์ˆ  ์‚ฌ์–‘์ž…๋‹ˆ๋‹ค.

WAI-ARIA๊ฐ€ ์ด์ƒ์ ์ธ ํ•ด๊ฒฐ์ฑ…์ด๋ผ ํ•˜๋”๋ผ๋„ ์ €๋Š” absolute ์œ„์น˜์ง€์ • ์ ‘๊ทผ๋ฐฉ๋ฒ•์„ ํƒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์š”์†Œ์— ์ž‘๋™ํ•˜๋ฉฐ ๊ฐ„๋‹จํ•œ ๊ธฐ์ˆ ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ ์ž๋ฃŒ

[โ†‘] Back to top