๐Ÿ“Œ ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ ๊ด€๋ จ_CSS

Q : CSS box model์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

A : CSS Box Model์€ ์›น ํŽ˜์ด์ง€์˜ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ค‘์š”ํ•œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ๊ฐ HTML ์š”์†Œ๋Š” ๋ฐ•์Šค๋กœ ์ทจ๊ธ‰๋˜๋ฉฐ, ๊ฐ ๋ฐ•์Šค๋Š” ์ฝ˜ํ…์ธ  ์˜์—ญ์„ ๊ฐ์‹ธ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ ˆ์ด์–ด๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ ˆ์ด์–ด๋Š” ์ฝ˜ํ…์ธ , ์•ˆ์ชฝ ์—ฌ๋ฐฑ, ํ…Œ๋‘๋ฆฌ, ๋ฐ”๊นฅ ์ชฝ ์—ฌ๋ฐฑ์œผ๋กœ ๋‚˜๋‰˜์–ด์ ธ ์žˆ์œผ๋ฉฐ ๊ฐ๊ฐ์˜ ๋ ˆ์ด์–ด๋Š” ์ƒ์ž์˜ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ๊ธฐ์—ฌํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ

  1. ์ฝ˜ํ…์ธ  ์˜์—ญ (Content): ์š”์†Œ์˜ ์‹ค์ œ ๋‚ด์šฉ์ด ํ‘œ์‹œ๋˜๋Š” ์˜์—ญ์ž…๋‹ˆ๋‹ค.
  2. ํŒจ๋”ฉ ์˜์—ญ (Padding): ์ฝ˜ํ…์ธ ์™€ ํ…Œ๋‘๋ฆฌ ์‚ฌ์ด์˜ ์—ฌ๋ฐฑ ์˜์—ญ์ž…๋‹ˆ๋‹ค. ํŒจ๋”ฉ์€ ์–‘์ˆ˜์˜ ๊ฐ’์œผ๋กœ ์ง€์ •๋˜๋ฉฐ, ์ฝ˜ํ…์ธ ์™€ ํŒจ๋”ฉ ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ์„ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค.
  3. ํ…Œ๋‘๋ฆฌ ์˜์—ญ (Border): ํŒจ๋”ฉ ์ฃผ์œ„์— ์œ„์น˜ํ•œ ํ…Œ๋‘๋ฆฌ ์˜์—ญ์ž…๋‹ˆ๋‹ค. ํ…Œ๋‘๋ฆฌ๋Š” ์„ ์˜ ํ˜•ํƒœ๋กœ, ๋‘๊ป˜, ์Šคํƒ€์ผ ๋ฐ ์ƒ‰์ƒ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ์—ฌ๋ฐฑ ์˜์—ญ (Margin): ํ…Œ๋‘๋ฆฌ์™€ ์ธ์ ‘ํ•œ ์š”์†Œ ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ ์˜์—ญ์ž…๋‹ˆ๋‹ค. ์—ฌ๋ฐฑ์€ ์–‘์ˆ˜์˜ ๊ฐ’์œผ๋กœ ์ง€์ •๋˜๋ฉฐ, ์š”์†Œ ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

Q : ๊ฐ„๋‹จํ•œ ๋กœ๊ทธ์ธ ํผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ€์šด๋ฐ ์œ„์น˜์‹œํ‚ค๋ ค๋ฉด CSS๋ฅผ ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋‚˜์š”? (centering)

A : ๊ฐ€์šด๋ฐ๋ฅผ ์œ„์น˜์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•˜๊ฒŒ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒซ๋ฒˆ์งธ, Flexbox๋ฅผ ์ด์šฉํ•˜์—ฌ align-items:center ๋ฐ justify-content:center์œผ๋กœ ์ˆ˜์ง ๋ฐ ์ˆ˜ํ‰ ์ค‘์•™ ์ •๋ ฌ์„ ์‹œ์ผœ์ค๋‹ˆ๋‹ค.

body {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100vh;
  margin: 0;
}

.login-form {
  /* ๋กœ๊ทธ์ธ ํผ ์Šคํƒ€์ผ */
}

๋‘๋ฒˆ์งธ, Grid๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ place-items:center ์ค‘์•™ ์ •๋ ฌ์„ ์‹œ์ผœ์ค๋‹ˆ๋‹ค.

body {
  display: grid;
  place-items: center;
  height: 100vh;
  margin: 0;
}

.login-form {
  /* ๋กœ๊ทธ์ธ ํผ ์Šคํƒ€์ผ */
}

์„ธ๋ฒˆ์งธ, postion ๋ฐ transform ์‚ฌ์šฉ

body {
  position: relative;
  height: 100vh;
  margin: 0;
}

.login-form {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  /* ๋กœ๊ทธ์ธ ํผ ์Šคํƒ€์ผ */
}

Q : styled-components์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

A : styled-components๋Š” JavascriptํŒŒ์ผ ์•ˆ์—์„œ CSS ์Šคํƒ€์ผ์„ ์„ ์–ธํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ React ํ”„๋กœ์ ํŠธ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
์ด๋Š” ์Šคํƒ€์ผ์„ ๋…๋ฆฝ์ ์ธ ์ปดํฌ๋„ŒํŠธ๋กœ ์ •์˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์Šคํƒ€์ผ ๊ฐ„์˜ ์ถฉ๋Œ์ด๋‚˜ ๋„ค์ด๋ฐ ๊ทœ์น™์— ๋Œ€ํ•œ ๊ฑฑ์ • ์—†์ด ๋ชจ๋“ˆํ™”๋œ ์Šคํƒ€์ผ๋ง์„ ํ•  ์ˆ˜ ์žˆ๊ณ , ๋™์ ์œผ๋กœ ์Šคํƒ€์ผ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•˜์—ฌ React ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ณด๋‹ค ์œ ์—ฐํ•˜๊ฒŒ ์Šคํƒ€์ผ๋งํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋ฉฐ ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ๊ฐ€ ๋” ๋ช…ํ™•ํ•ด์ ธ์„œ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๋” ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.


Q : px, em, rem ์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

A : ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” em์€ ํ…์ŠคํŠธ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•  ๋•Œ, rem์€ ๋ ˆ์ด์•„์›ƒ์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋ฉฐ, px๋Š” ๊ณ ์ •๋œ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. rem์€ ํŠนํžˆ ๋ฃจํŠธ ํฌ๊ธฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ƒ๋Œ€ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด์ ์ธ ๋ ˆ์ด์•„์›ƒ์„ ์ผ๊ด€๋˜๊ฒŒ ์กฐ์ ˆํ•˜๊ธฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

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