๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ฆฌ์ œ

CSS ์ฝ”๋“œ์™€ ์›น์‚ฌ์ดํŠธ์˜ ๊ตฌ์กฐ ๋ณธ๋ฌธ

๊ฐœ๋ฐœ์ž ํ˜ธ์†Œ์ธ/Front

CSS ์ฝ”๋“œ์™€ ์›น์‚ฌ์ดํŠธ์˜ ๊ตฌ์กฐ

๋ฆฌ์ œ๐Ÿซง 2026. 6. 24. 12:07

 

1. ์ดˆ๊ธฐํ™” ๋ฐ ๊ธฐ๋ณธ ์„ค์ • (Reset & Base)

๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €๋Š” ๊ธฐ๋ณธ ์Šคํƒ€์ผ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ, ์ด๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์•ผ ์›ํ•˜๋Š” ๋Œ€๋กœ ๋””์ž์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

  • *{ margin: 0; padding: 0; box-sizing: border-box; }: ๋ชจ๋“  ์š”์†Œ์˜ ๊ธฐ๋ณธ ์—ฌ๋ฐฑ์„ ์—†์• ๊ณ , ํ…Œ๋‘๋ฆฌ๊นŒ์ง€ ํฌํ•จํ•ด์„œ ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•˜๋„๋ก ์„ค์ •. (๋ ˆ์ด์•„์›ƒ ์„ค๊ณ„์˜ ํ•„์ˆ˜)
  • body{ ... }: ํŽ˜์ด์ง€ ์ „์ฒด์˜ ๊ธฐ๋ณธ ๊ธ€๊ผด, ์ƒ‰์ƒ, ๋ฐฐ๊ฒฝ์ƒ‰์„ ์ง€์ •.
  • a{ text-decoration: none; color: inherit; }: ๋งํฌ์˜ ๋ฐ‘์ค„์„ ์—†์• ๊ณ , ์ƒ‰์ƒ์€ ๋ถ€๋ชจ ์š”์†Œ์˜ ์ƒ‰์ƒ์„ ๊ทธ๋Œ€๋กœ ๋”ฐ๋ผ๊ฐ€๊ฒŒ ํ•จ
  • img{ max-width: 100%; display: block; }: ์ด๋ฏธ์ง€๊ฐ€ ๋ถ€๋ชจ ์˜์—ญ๋ณด๋‹ค ์ปค์ ธ์„œ ํŠ€์–ด๋‚˜๊ฐ€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

2. ๋ ˆ์ด์•„์›ƒ์˜ ํ‹€ (Wrapper & Header)

  • .wrapper{ max-width: 1120px; margin: 0 auto; }: ์‚ฌ์ดํŠธ ์ฝ˜ํ…์ธ ๋ฅผ ํ™”๋ฉด ์ค‘์•™์— 1120px ๋„ˆ๋น„๋กœ ๊ณ ์ •ํ•˜์—ฌ ๋ฐฐ์น˜
  • .header{ display: flex; justify-content: space-between; ... }: ๋กœ๊ณ , ๊ฒ€์ƒ‰์ฐฝ, ๋ฉ”๋‰ด๋ฅผ ๊ฐ€๋กœ๋กœ ๋ฐฐ์น˜ํ•˜๊ณ  ์–‘์ชฝ ๋์œผ๋กœ ๋ฐ€์–ด๋‚ด์–ด ๊ท ํ˜•์„ ๋งž์ถค
  • .search{ flex: 1; ... }: ๊ฒ€์ƒ‰์ฐฝ์ด ํ—ค๋”์˜ ๋‚จ์€ ๊ณต๊ฐ„์„ ์•Œ์•„์„œ ์ฐจ์ง€ํ•˜๋„๋ก ์„ค์ •

3. ๋‚ด๋น„๊ฒŒ์ด์…˜ & ๋“œ๋กญ๋‹ค์šด (Navigation)

  •  
  • .nav .submenu{ position: absolute; ... opacity: 0; visibility: hidden; }: ์„œ๋ธŒ ๋ฉ”๋‰ด๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ˆจ๊ฒจ๋‘์—ˆ๋‹ค๊ฐ€, ๋งˆ์šฐ์Šค๋ฅผ ์˜ฌ๋ ธ์„ ๋•Œ ๋‚˜ํƒ€๋‚˜๋„๋ก ํ•จ
  • .nav > ul > li:hover .submenu{ opacity: 1; ... }: ๋งˆ์šฐ์Šค๋ฅผ ์˜ฌ๋ ธ์„ ๋•Œ ์„œ๋ธŒ ๋ฉ”๋‰ด๋ฅผ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋‚˜ํƒ€๋‚˜๊ฒŒ ํ•จ

4. ๋ฉ”์ธ ์ปจํ…์ธ  (Flex & Grid)

์ •๋ ฌ

  • .main{ display: flex; gap: 24px; }: ๋ฉ”์ธ ์˜์—ญ์„ ์™ผ์ชฝ(Section)๊ณผ ์˜ค๋ฅธ์ชฝ(Aside)์œผ๋กœ ๋‚˜๋ˆ”
  • .main .section{ flex: 7; } .main .aside{ flex: 3; }: ์ „์ฒด ํ™”๋ฉด์„ 10:3 ๋น„์œจ๋กœ ๋‚˜๋ˆ„์–ด ์™ผ์ชฝ์„ ํ›จ์”ฌ ๋„“๊ฒŒ ์”€.
  • .cards{ display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }: ์นด๋“œ 3๊ฐœ๋ฅผ ๊ฐ€๋กœ๋กœ ๋˜‘๊ฐ™์€ ํฌ๊ธฐ(1fr)๋กœ 3๋“ฑ๋ถ„ํ•˜์—ฌ ์ •๋ ฌ

5. ์ปดํฌ๋„ŒํŠธ ์„ธ๋ถ€ ๋””์ž์ธ (Banner & Card & Login)

  • .banner{ background: linear-gradient(...); }: ๋‹จ์ƒ‰์ด ์•„๋‹Œ ๊ทธ๋ผ๋ฐ์ด์…˜ ์ƒ‰์ƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ธ๋ จ๋œ ๋А๋‚Œ์„ ์ค€๋‹ค.
  • .notice{ display: flex; align-items: center; }: ๊ณต์ง€์‚ฌํ•ญ ์•„์ด์ฝ˜๊ณผ ํ…์ŠคํŠธ๋ฅผ ์ˆ˜ํ‰์œผ๋กœ ์ •๋ ฌ.
  • .box{ border: 1px solid gainsboro; border-radius: 12px; }: ๋ชจ์„œ๋ฆฌ๊ฐ€ ๋‘ฅ๊ทผ ํ…Œ๋‘๋ฆฌ ๋ฐ•์Šค๋ฅผ ๋งŒ๋“ค์–ด ๊ฐ•์กฐ.
  • .login input, .login button{ ... }: ๋กœ๊ทธ์ธ ํผ์˜ ๋†’์ด, ํ…Œ๋‘๋ฆฌ, ์—ฌ๋ฐฑ์„ ์„ค์ •ํ•˜์—ฌ ๋ฒ„ํŠผ๊ณผ ์ž…๋ ฅ์ฐฝ์„ ๋ณด๊ธฐ ์ข‹๊ฒŒ ๋งŒ๋“ ๋‹ค.

 

๐Ÿ’ก ํ•™์Šต ํฌ์ธํŠธ

  1. Flexbox: ๋ฉ”๋‰ด๋‚˜ ํ—ค๋”์ฒ˜๋Ÿผ ํ•œ ์ค„๋กœ ์ •๋ ฌํ•  ๋•Œ (display: flex)
  2. Grid: ์นด๋“œ ๋ชฉ๋ก์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ์ค„๋กœ ์ •๋ ฌํ•  ๋•Œ (display: grid)