์ค‘๊ธ‰ CSS

JOOYEUN SEOยท2024๋…„ 10์›” 1์ผ

100 Days of Python

๋ชฉ๋ก ๋ณด๊ธฐ
44/76
post-thumbnail

๐Ÿ—‚๏ธ Day44 ํ”„๋กœ์ ํŠธ: ๊ฐœ์ธ ์›น์‚ฌ์ดํŠธ4

๊ฐœ์ธ CV ์›น์‚ฌ์ดํŠธ ์ตœ์ข…๋ณธ

๐Ÿ” ์œ ์˜ ์‚ฌํ•ญ

โ– Favicon

  • Favorite Icon ์˜ ์ค„์ž„๋ง
  • ์›น์‚ฌ์ดํŠธ์˜ ์ฃผ์†Œ์ฐฝ, ํŽ˜์ด์ง€ ํƒญ, ๋ถ๋งˆํฌ ๋“ฑ์— ํ‘œ์‹œ๋˜๋Š” ์ž‘์€ ์•„์ด์ฝ˜
  • ํŒŒ๋น„์ฝ˜ ์ œ์ž‘ ์‚ฌ์ดํŠธ

๐Ÿ—๏ธ index.html

โ€ฆ
<head>
    โ€ฆ
    <link rel="stylesheet" href="css/styles.css">
    <link rel="icon" href="favicon.ico">
</head>

์•„์ด์ฝ˜์„ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ ํด๋”์— ๋„ฃ๊ณ  ๋งํฌ

โ– HTML Div

<div>

  • ํŠน์ˆ˜ํ•œ html ์š”์†Œ๋กœ, ์›น์‚ฌ์ดํŠธ์˜ ์ปจํ…์ธ ๋ฅผ ๊ฐœ๋ณ„์˜ ๋ฐ•์Šค๋กœ ๋ถ„ํ• 
  • ๊ฐ๊ฐ์˜ div๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ตฌ์กฐํ™” ๊ฐ€๋Šฅ
  • div๋กœ CSS๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ์ž‘์šฉํ•จ

๐Ÿ—๏ธ index.html

<body>
    <div>
        <h1>I'm name.</h1>
        <p>a programmer.</p>
    </div>
โ€ฆ

๐ŸŽจstyle.css

body {
    margin: 0;     /* ์›นํŽ˜์ด์ง€ ๋ชจ๋“  ๊ฐ€์žฅ์ž๋ฆฌ์˜ ์—ฌ๋ฐฑ(๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ณธ ์Šคํƒ€์ผ)์„ ์—†์•ฐ */
}

h1 {
    margin-top: 0; /* ์ œ๋ชฉ ์ƒ์ž ์œ—๋ฉด์˜ ์—ฌ๋ฐฑ์„ ์—†์•ฐ */
}

div {
    background-color: #EDDFE0;
}

โ– CSS ๋ฐ•์Šค ๋ชจ๋ธ

ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅ

div ๋˜๋Š” box์˜ ๊ตฌ์„ฑ

  • margin(์—ฌ๋ฐฑ) : ๋ฐ•์Šค์™€ ํ™”๋ฉด์— ์žˆ๋Š” ๋‹ค๋ฅธ ๊ฒƒ๋“ค ์‚ฌ์ด์˜ ์™„์ถฉ๊ตฌ์—ญ (๋ฐ•์Šค ๊ธธ์ด์— ๋ฏธํฌํ•จ)
    • border(๊ฒฝ๊ณ„) : ํ…Œ๋‘๋ฆฌ ์„ (๊ตต๊ฒŒ ํ•˜๊ฑฐ๋‚˜ 0์œผ๋กœ ๋ฌด์‹œ, ๋ฐ•์Šค ๊ธธ์ด์— ํฌํ•จ)
      • padding(๊ณต๋ฐฑ) : ๊ฒฝ๊ณ„์™€ ์ฝ˜ํ…์ธ  ์‚ฌ์ด์˜ ๊ณต๊ฐ„ (๋ฐ•์Šค ๊ธธ์ด์— ํฌํ•จ)
        • ์ฝ˜ํ…์ธ  : ์ฝ˜ํ…์ธ ์— ๋งž๊ฒŒ ์ž๋™์œผ๋กœ ๋ฐ•์Šค ํฌ๊ธฐ ์ง€์ • or ์ง์ ‘ ๋ฐ•์Šค์— ๋†’์ด/ํญ์„ ์„ค์ •

โ†’ ๋ฐ•์Šค๋“ค์„ ํ™”๋ฉด์— ๋ฐฐ์น˜ํ•˜๋ ค๋ฉด ์—ฌ๋ฐฑ, ๊ฒฝ๊ณ„, ๊ณต๋ฐฑ, ์ฝ˜ํ…์ธ ์˜ ๊ธธ์ด๋ฅผ ๋ชจ๋‘ ๋”ํ•ด์„œ ์œ„์น˜๋ฅผ ๊ณ„์‚ฐํ•ด์•ผ ํ•œ๋‹ค

๐Ÿ—๏ธ index.html

<body>
    <div class="top-container">
        <h1>I'm name.</h1>
        <p>a programmer.</p>
    </div>
    <div class="middle-container"></div>
    <div class="bottom-container"></div>
</body>

๋ฐ‘์˜ ๋ฐ•์Šค๋Š” ๊ทธ ์œ„์˜ ๋ฐ•์Šค์˜ ๋„ˆ๋น„๋ฅผ ๊ณ„์‚ฐ โ†’ ๋„ˆ๋น„๋งŒํผ ์™ผ์ชฝ ๋งˆ์ง„์„ ์„ค์ •

โ– CSS ๋””์Šคํ”Œ๋ ˆ์ด ์†์„ฑ

HTML ์š”์†Œ์—๋Š” 4๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ๊ฐ’์ด ์กด์žฌ
(CSS ํŒŒ์ผ์—์„œ ํ•ด๋‹น ์š”์†Œ์— display: ๊ฐ’ ์œผ๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ)

  • block
    • ์›นํŽ˜์ด์ง€์˜ ํ™”๋ฉด ํญ ์ „์ฒด๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ์š”์†Œ
    • ๋‹ค๋ฅธ ๋ชจ๋“  ์š”์†Œ๊ฐ€ ํ•ด๋‹น ์š”์†Œ์˜ ์˜†์— ์žˆ์ง€ ๋ชปํ•˜๋„๋ก ์ฐจ๋‹จ(blocking)
    • block ์š”์†Œ ์˜ˆ์‹œ
      • paragraphs : <p>
      • headers : <h1> ... <h6>
      • divisions :<div>
      • lists & list items : <ol>, <ul>, <li>
      • forms : form
  • inline
    • ๋†’์ด์™€ ํญ์—์„œ ํ•„์š”ํ•œ ๋งŒํผ์˜ ๊ณต๋ฐฑ๋งŒ ์ฐจ์ง€ํ•จ (ํญ์„ ๋”ฐ๋กœ ์กฐ์ ˆํ•˜์ง€ ๋ชป ํ•จ)
    • ๋‹ค๋ฅธ ์š”์†Œ๋“ค์ด ๊ฐ™์€ ๋ผ์ธ์— ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์„ ์ฐจ๋‹จํ•˜์ง€ ์•Š์Œ
    • block ์•ˆ์—์„œ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๋ถ€๋ถ„๋งŒ ๋”ฐ๋กœ ์Šคํƒ€์ผ๋งํ•  ์ˆ˜๋„ ์žˆ์Œ
    • inline ์š”์†Œ ์˜ˆ์‹œ
      • spans : <span>
      • anchors : <a>
  • inline-block
    • block๊ณผ inline์˜ ์žฅ์ ์„ ํ•ฉํ•จ
    • ์š”์†Œ๋“ค์ด ๊ฐ™์€ ๋ผ์ธ์— ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉด์„œ๋„ ํญ์„ ์›ํ•˜๋Š” ๋Œ€๋กœ ์กฐ์ ˆ ๊ฐ€๋Šฅ
    • inline-block ์š”์†Œ ์˜ˆ์‹œ
      • images : <img>
  • none
    • ์•„๋ฌด ๊ฒƒ๋„ ํ‘œ์‹œํ•˜์ง€ ์•Š์Œ
    • ํ™”๋ฉด์—์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ฐ์ถฐ์•ผ ํ•  ๋•Œ(ํ€ด์ฆˆ์˜ ์ •๋‹ต ๋“ฑ) ์‚ฌ์šฉ ๊ฐ€๋Šฅ
      • ๋ฐฉ๋ฒ•1
        • css ํŒŒ์ผ์—์„œ html ์š”์†Œ์˜ display๊ฐ’์„ none์œผ๋กœ ๋ณ€๊ฒฝ
        • html์—์„œ ์•„์˜ˆ ์‚ญ์ œํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋‚˜ํƒ€๋‚จ
      • ๋ฐฉ๋ฒ•2
        • css ํŒŒ์ผ์—์„œ html ์š”์†Œ์˜ visibility๊ฐ’์„ hidden์œผ๋กœ ๋ณ€๊ฒฝ
        • ์›๋ž˜ ์œ„์น˜๋ฅผ ์œ ์ง€ํ•œ ์ฑ„๋กœ ์‚ฌ๋ผ์ง (๋ณผ ์ˆ˜๋งŒ ์—†์„ ๋ฟ ์—ฌ์ „ํžˆ ๊ทธ ์ž๋ฆฌ์— ์žˆ์Œ)

โ– CSS ํฌ์ง€์…”๋‹

CSS์˜ Position ์†์„ฑ 4๊ฐ€์ง€

+

๐Ÿ’ก CSS์˜ Coordinates(์ขŒํ‘œ) ์†์„ฑ

  • position ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ขŒํ‘œ ์†์„ฑ์˜ ๊ฐ’๋„ ์„ค์ •ํ•ด์•ผ ์‹ค์ œ๋กœ ์š”์†Œ๋ฅผ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Œ
  • top, bottom, left, right

โ—‡ ์ •์  ํฌ์ง€์…”๋‹

์ •์ (static) Positioning
HTML ๊ทœ์น™์„ ๋”ฐ๋ฅธ ๊ธฐ๋ณธ ๋ ˆ์ด์•„์›ƒ

  • ๊ทœ์น™1: ์ฝ˜ํ…์ธ ๊ฐ€ ์š”์†Œ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•, ๋†’์ด ๋ฐ ํญ์„ ๊ฒฐ์ •ํ•œ๋‹ค (CSS์™€ ๋ฌด๊ด€)
  • ๊ทœ์น™2: ํ™”๋ฉด์— ๋‚˜์˜ค๋Š” ์š”์†Œ๋“ค์˜ ๋ฐฐ์น˜ ์ˆœ์„œ๋Š” ์ž‘์„ฑ๋œ HTML ์ฝ”๋“œ๋ฅผ ๋”ฐ๋ฆ„
  • ๊ทœ์น™3: ํ•˜์œ„ ๊ฐœ์ฒด(์ž์‹)๊ฐ€ ์ƒ์œ„ ๊ฐœ์ฒด(๋ถ€๋ชจ)์˜ ์œ„์— ๋†’์ž„
    • ์˜ˆ) <div> ์•ˆ์— <h1>๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ƒ์ž ์œ„์— ์ œ๋ชฉ์ด ์˜ฌ๋ผ๊ฐ
    • ํ™”๋ฉด์—์„œ zz์ถ•์œผ๋กœ ์š”์†Œ ์œ„์— ์š”์†Œ๋ฅผ ์Œ“์Œ

โ—‡ ์ƒ๋Œ€์  ํฌ์ง€์…”๋‹

์ƒ๋Œ€์ (relative) Positioning
์›๋ž˜ ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์œ„์น˜ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

  • ์ขŒํ‘œ ์†์„ฑ ์„ค์ •
    • top : ์•„๋ž˜๋กœ ๋ฐ€๋ฆผ
    • bottom : ์œ„๋กœ ๋ฐ€๋ฆผ
    • left : ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฐ€๋ฆผ
    • right : ์™ผ์ชฝ์œผ๋กœ ๋ฐ€๋ฆผ
  • ๊ฐœ์ฒด๋ฅผ ์ด๋™ํ•˜๊ธฐ ์ „ ์›๋ž˜ ์œ„์น˜์—์„œ ์„ค์ •ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ margin์„ ์ถ”๊ฐ€ํ•˜๋ฏ€๋กœ ๋‹จ์–ด์™€ ๋ฐ˜๋Œ€๋กœ ์ž‘์šฉ
  • ์ƒ๋Œ€์  ์œ„์น˜๋ฅผ ๊ฐ€์ง„ ์š”์†Œ๋ฅผ ์ด๋™์‹œ์ผœ๋„ ํ™”๋ฉด์— ์žˆ๋Š” ๋‹ค๋ฅธ ๊ฒƒ๋“ค์˜ ์œ„์น˜์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Œ
    • ์ด๋™์‹œํ‚ค๊ธฐ ์ „ ์œ„์น˜๋Š” ๊ทธ๋Œ€๋กœ ์œ ์ง€๋จ(์œ ๋ น ์š”์†Œ๊ฐ€ ๋‚จ์•„์žˆ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Œ)
    • ์ด๋™ํ•œ ์ž๋ฆฌ์— ๋‹ค๋ฅธ ๊ฐœ์ฒด๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ ๊ฐœ์ฒด๋ฅผ ๋ฎ์Œ

โ—‡ ์ ˆ๋Œ€์  ํฌ์ง€์…”๋‹

์ ˆ๋Œ€์ (absolute) Positioning
์ƒ์œ„ ๊ฐœ์ฒด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์œ„์น˜ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

  • ์ขŒํ‘œ ์†์„ฑ ์„ค์ •
    • top : ์œ„๋กœ ์ด๋™
    • bottom : ์•„๋ž˜๋กœ ์ด๋™
    • left : ์™ผ์ชฝ์œผ๋กœ ์ด๋™
    • right : ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™
  • ์ƒ์œ„ ๊ฐœ์ฒด = position์˜ ๊ฐ’์ด static์ด ์•„๋‹Œ ๋ถ€๋ชจ(์—†์„ ๊ฒฝ์šฐ ์›นํŽ˜์ด์ง€ body์˜ ์ „์ฒด)
  • ๊ฐœ์ฒด์˜ ์ƒ์œ„ ์š”์†Œ์— margin์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด๋™ํ•˜๋Š” ๊ฒƒ
  • ์ƒ๋Œ€์  ํฌ์ง€์…”๋‹๊ณผ ๋‹ฌ๋ฆฌ ์‹ค์ œ๋กœ ์š”์†Œ๋ฅผ ์ž์—ฐ์ ์ธ html์˜ ํ๋ฆ„์—์„œ ๊บผ๋‚ด๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Œ
    • ์š”์†Œ์˜ ์ด๋™์ด ๋‹ค๋ฅธ ๊ฐœ์ฒด๋“ค์˜ ์œ„์น˜์— ์˜ํ–ฅ์„ ๋ฏธ์นจ

โ—‡ ๊ณ ์ • ํฌ์ง€์…”๋‹

๊ณ ์ •(fixed) Positioning
์›นํŽ˜์ด์ง€์˜ body์— ๋Œ€ํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ์ž๋ฆฌ๊ฐ€ ๊ณ ์ •๋จ

  • ์›นํŽ˜์ด์ง€๋ฅผ ์Šคํฌ๋กค ์—…/๋‹ค์šด ํ•ด๋„ ๊ณ„์† ๊ฐ™์€ ์ž๋ฆฌ์— ๋จธ๋ฌด๋ฆ„

โ– ์š”์†Œ๋ฅผ ์ค‘์•™์— ๋ฐฐ์น˜

  • body์— text-align: center; ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•
    • block, inline-block์ธ elements์—๋งŒ ์ ์šฉ
    • ๋ฐ”๋”” ์•ˆ์˜ ์š”์†Œ๋“ค ์ค‘ ๋”ฐ๋กœ ํญ์ด ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒƒ๋“ค์—๋งŒ ์ผ๊ด„์ ์šฉ๋จ
      (ํŠน์ • ์š”์†Œ์˜ ํญ์„ ์„ค์ •ํ•˜๋ฉด ๊ทธ ์š”์†Œ๋งŒ ๊ฐ€์šด๋ฐ ์ •๋ ฌ์ด ํ’€๋ฆผ)
  • ํ•ด๋‹น element์˜ margin ์†์„ฑ์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
    • ๊ฐ’์„ auto๋กœ ์„ค์ •ํ•˜๋ฉด ์š”์†Œ๋ฅผ ์ˆ˜์ง ๋˜๋Š” ์ˆ˜ํ‰์œผ๋กœ ์ค‘์•™์— ์ •๋ ฌ ๊ฐ€๋Šฅ
    • ์ˆ˜ํ‰ ์ค‘์•™์— ์ •๋ ฌํ•˜๋ ค๋ฉด margin: 0 auto 0 auto; ์œผ๋กœ ์„ค์ •
      • ๊ฐ’ ์ˆœ์„œ๋Œ€๋กœ ์œ—๋‹จ, ์˜ค๋ฅธ์ชฝ๋‹จ, ์•„๋žซ๋‹จ, ์™ผ์ชฝ๋‹จ์˜ ์—ฌ๋ฐฑ์„ ์˜๋ฏธ (๐Ÿ•ฐ๏ธ ์‹œ๊ณ„๋ฐฉํ–ฅ)
      • margin: 0 auto;๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์œ„/์•„๋žซ๋‹จ, ์–‘์ชฝ๋‹จ ์„ค์ • ๊ฐ€๋Šฅ
  • position: absolute ์†์„ฑ์œผ๋กœ ๊บผ๋‚ด๋Š” ๋ฐฉ๋ฒ•
    • ์—ฌ๋Ÿฌ ์š”์†Œ๋“ค์ด ๊ฐ™์€ ๋ผ์ธ์— ์œ„์น˜ํ•œ ๊ฒฝ์šฐ ์ค‘์•™์— ๋ฐฐ์น˜ํ•˜๋ ค๋Š” element๋ฅผ ์ œ์™ธํ•˜๊ณ  ๊บผ๋‚ด๊ธฐ

โ– ํฐํŠธ ์Šคํƒ€์ผ๋ง

font-family ์†์„ฑ์—์„œ ์“ฐ์ด๋Š” ํฐํŠธ์˜ ๊ณ„์—ด

  • ์ผ๋ฐ˜์ ์ธ ์›น์‚ฌ์ดํŠธ ์Šคํƒ€์ผ๋ง์— ์ฃผ๋กœ ์‚ฌ์šฉ๋จ
    • Sans-serif : ๊ธ€์ž์˜ ๋๋ถ€๋ถ„์ด ๋ฐ˜๋“ฏํ•˜๊ฒŒ ๋–จ์–ด์ง€๋Š” ๊ธ€์”จ์ฒด (๊ธฐ๋ณธ๊ฐ’์€ ๋Œ€๋ถ€๋ถ„ Arial)
    • Serif : ๊ธ€์ž์˜ ๋๋ถ€๋ถ„์— ๋ฐœ์ด ๋‹ฌ๋ฆฐ ๊ธ€์”จ์ฒด (๊ธฐ๋ณธ๊ฐ’์€ ๋Œ€๋ถ€๋ถ„ Times)
  • ์ฝ”๋“œ ์ž…๋ ฅ์— ์ ํ•ฉ
    • monospace : ํ…์ŠคํŠธ ์•ˆ์˜ ๋ชจ๋“  ๋ฌธ์ž๊ฐ€ ๋™์ผํ•œ ํญ์„ ์ฐจ์ง€
  • ๊ฐ€๋…์„ฑ์ด ๋‚ฎ์•„์„œ ์ž˜ ์•ˆ ์“ฐ์ž„
    • cursive : ์†๊ธ€์”จ ์Šคํƒ€์ผ์˜ ํฐํŠธ
    • fantasy : ๊ณ ๋Œ€๋ฌธ์„œ? ์Šคํƒ€์ผ์˜ ํฐํŠธ

๋Œ€๋žต์ ์ธ ํฐํŠธ ๊ณ„์—ด์˜ ์•ž์— ๊ตฌ์ฒด์ ์ธ ํฐํŠธ๋ฅผ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ (๋น„์Šทํ•œ ๋А๋‚Œ์˜ ํฐํŠธ๋ผ๋ฆฌ ๋ฌถ์–ด์•ผ ํ•จ)
font-family: verdana, sans-serif; ์˜ ๊ฒฝ์šฐ
verdana์ฒด๋ฅผ ์šฐ์„  ์‚ฌ์šฉ, verdana์ฒด๊ฐ€ ์‚ฌ์šฉ ๋ถˆ๊ฐ€ ์ƒํƒœ๋ผ๋ฉด sans-serif์ฒด๋ฅผ ์‚ฌ์šฉ

โ†“
CSS Web Safe Fonts

  • ๋Œ€๋ถ€๋ถ„์˜ OS๊ฐ€ ์ •ํ™•ํ•˜๊ฒŒ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ๋Š” ํฐํŠธ ๊ณ„์—ด ํ™•์ธ ๊ฐ€๋Šฅ
  • ๋กœ์ปฌ์—์„œ ๋””์ž์ธํ•  ๋•Œ ์ง์ ‘ ๋ณด๋Š” ๊ฒƒ๊ณผ ๋˜‘๊ฐ™์ด ๋ Œ๋”๋ง๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Œ
    (๋‹ค๋งŒ 100% ์™„๋ฒฝํžˆ ๊ตฌํ˜„๋˜๋Š” ํฐํŠธ๋Š” ์—†์Œ)

โ†“
font embedding์„ ํ†ตํ•ด ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์„ค์ •๋œ ํฐํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค
Google Fonts์—์„œ ์›ํ•˜๋Š” ํฐํŠธ๋“ค๋กœ font family๋ฅผ ๋งŒ๋“  ํ›„ ๋งํฌ๋ฅผ ๋ณต์‚ฌ
(๐Ÿ—๏ธ index.html์˜ head์—์„œ ๋งํฌํ•˜์—ฌ ์›น์‚ฌ์ดํŠธ์— ์ž„๋ฒ ๋”ฉ)

โ– ์ฝ˜ํ…์ธ  ์ถ”๊ฐ€

Lorem Ipsum ์ƒ์„ฑ๊ธฐ

  • ์•„์ง ์ฝ˜ํ…์ธ ๊ฐ€ ์—†์„ ๋•Œ ์‹ค์ œ ํ…์ŠคํŠธ๊ฐ€ ๋“ค์–ด๊ฐˆ ์ž๋ฆฌ์— ๋Œ€์‹  ๋„ฃ์–ด ๋†“๋Š” ์˜๋ฏธ์—†๋Š” ๋ฌธ์žฅ
  • ์›ํ•˜๋Š” ๋‹จ์–ด, ๋ฌธ์žฅ, ๋‹จ๋ฝ ์ˆ˜๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ƒ์„ฑ ๊ฐ€๋Šฅ
  • ์˜ˆ) Lorem ipsum odor amet, consectetuer adipiscing elit.

โ– CSS ์‚ฌ์ด์ฆˆ ์กฐ์ ˆ

  • ์ •์  ์‚ฌ์ด์ฆˆ
    • px ๋‹จ์œ„๋กœ ํฌ๊ธฐ๋ฅผ ์ง€์ •
    • ๋ธŒ๋ผ์šฐ์ €์˜ ๊ธฐ๋ณธ ์„ค์ •(ํฐํŠธ ํฌ๊ธฐ ๋“ฑ)์„ ๋ณ€๊ฒฝํ•ด๋„ ์„ค์ •ํ•œ ํฌ๊ธฐ๋ฅผ ์œ ์ง€
  • ๋™์  ์‚ฌ์ด์ฆˆ
    • ๋ฐฉ๋ฒ•1
      • % ๋กœ ํฌ๊ธฐ๋ฅผ ์ง€์ • (100%=16px100\%=16px ์ •๋„)
      • ๋ธŒ๋ผ์šฐ์ €์˜ ๊ธฐ๋ณธ ์„ค์ •์— ๋”ฐ๋ผ ํฌ๊ธฐ๊ฐ€ ํ™•๋Œ€/์ถ•์†Œ๋จ
    • ๋ฐฉ๋ฒ•2
      • em ๋‹จ์œ„๋กœ ํฌ๊ธฐ๋ฅผ ์ง€์ • (ํ…์ŠคํŠธ๋ฅผ ๊ธฐ์šธ์ž„์ฒด๋กœ ๋ฐ”๊พธ๋Š” <em> ํƒœ๊ทธ์™€ ๋‹ค๋ฆ„)
      • em์€ ๋Œ€๋ฌธ์ž M์˜ ํญ์„ ์˜๋ฏธ (1em=100%=16px1em=100\%=16px)
    • ๋™์  ์‚ฌ์ด์ฆˆ๋Š” ์ƒ์†๋จ
      • ์ƒ์œ„ ๊ฐœ์ฒด์—์„œ ์ƒ์†๋ฐ›์€ ๋™์  ์‚ฌ์ด์ฆˆ + ํ•˜์œ„ ๊ฐœ์ฒด์—์„œ ์„ค์ •ํ•œ ๋™์  ์‚ฌ์ด์ฆˆ
        = ํ•˜์œ„ ๊ฐœ์ฒด์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์ด์ฆˆ๊ฐ€ ๋งค์šฐ ์ปค์งˆ ์œ„ํ—˜์ด ์žˆ์Œ
      • ๋ฐฉ๋ฒ•3: rem ๋‹จ์œ„๋Š” "root em"์˜ ์ค„์ž„๋ง๋กœ, ๋ชจ๋“  ์ƒ์œ„ ์„ค์ •์„ ๋ฌด์‹œ
        • ๊ฐ€์žฅ ์•ˆ์ •์ ์ด๋ฏ€๋กœ ์ถ”์ฒœ
        • ๋‹จ, ์—ฌ๋ฐฑ์ด๋‚˜ ํŒจ๋”ฉ ๋“ฑ์„ ์„ค์ •ํ•  ๋•Œ๋Š” ์‰ฌ์šด ๊ณ„์‚ฐ์„ ์œ„ํ•ด px์ด ๋” ์ข‹์„ ์ˆ˜ ์žˆ์Œ

โ– CSS Float ๋ฐ Clear

Float ์†์„ฑ

  • float ์†์„ฑ์„ ์ ์šฉํ•œ ์š”์†Œ๋Š” ๋„์›Œ์„œ ๋ฐฐ์น˜ ๊ฐ€๋Šฅ
  • ํ•ด๋‹น ์š”์†Œ์˜ ์ฃผ์œ„๋กœ ๋‹ค๋ฅธ ์š”์†Œ๋“ค์ด ํ๋ฆ„(๊ฐ์‹ธ๋Š” ๋А๋‚Œ)
  • ์ด๋ฏธ์ง€ ์˜†์— ํ…์ŠคํŠธ ๋ฐฐ์น˜ ๊ฐ€๋Šฅ(ํ•˜์ง€๋งŒ ๊ฐ•์˜์—์„œ๋Š” ๋ ˆ์ด์•„์›ƒ๊ณผ ํฌ์ง€์…”๋‹์— ํ”Œ๋กœํŒ… ์‚ฌ์šฉ์„ ์ง€์–‘ ๊ถŒ์žฅ)
  • ๊ฐ’
    • left(์™ผ์ชฝ์œผ๋กœ ๋„์›€)
    • right(์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋„์›€)

Clear ์†์„ฑ

  • float ์†์„ฑ์ด ์ ์šฉ๋˜์ง€ ์•Š๋„๋ก ํ•ด์ œ
  • ํ•ด๋‹น ์š”์†Œ๊ฐ€ float ์†์„ฑ์ด ์ ์šฉ๋œ ์š”์†Œ์˜ ์ฃผ์œ„๋กœ ํ๋ฅด๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ์—ญํ• 
  • ๊ฐ’
    • left(์™ผ์ชฝ์„ ํ•ด์ œ)
    • right(์˜ค๋ฅธ์ชฝ์„ ํ•ด์ œ)
    • both(์–‘์ชฝ์„ ๋ชจ๋‘ ํ•ด์ œ)

โ– ์Šคํƒ€์ผ์ด ์ฒจ๊ฐ€๋œ ์›น์‚ฌ์ดํŠธ ์™„์„ฑ

css ๋ฒ„ํŠผ ์ƒ์„ฑ๊ธฐ๋กœ ์›ํ•˜๋Š” ์Šคํƒ€์ผ์˜ ๋ฒ„ํŠผ ์ƒ์„ฑ ํ›„ ์ฝ”๋“œ ๋ณต์‚ฌ

๐Ÿ—๏ธ index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>name's Personal Site</title>
    <link rel="stylesheet" href="css/styles.css">
    <link rel="icon" href="favicon.ico">
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Merriweather:ital,wght@0,300;0,400;0,700;0,900;1,300;1,400;1,700;1,900&family=Montserrat:ital,wght@0,100..900;1,100..900&family=Sacramento&display=swap" rel="stylesheet">
</head>

<body>
    <div class="top-container">
        <img class="top-cloud" src="images/cloud.png" alt="cloud">
        <h1>I'm name.</h1>
        <h2>a <span class="pro">pro</span>grammer.</h2>
        <img class="bottom-cloud" src="images/cloud.png" alt="cloud">
        <img src="images/mountain.png" alt="mountain">
    </div>

    <div class="middle-container">
        <div class="profile">
            <img src="images/profile-avatar.png" alt="profile picture">
            <h2>Hello.</h2>
            <p class="intro">Lorem ipsum dolor sit amet, vitae volutpat, dui conubia, dolor urna. Non auctor, montes nulla distinctio.</p>
        </div>
        <hr>

        <div class="skills">
            <h2>My Skills.</h2>
            <div class="skill-row">
                <img class="computer-img" src="images/computer.png" alt="computer">
                <h3>Lorem & Ipsum</h3>
                <p>Lorem ipsum dolor sit amet, quis in duis, iaculis id felis. Consectetuer vestibulum, nunc urna lectus, erat ligula. Hendrerit nam, lectus ante, ut lorem eros.</p>
            </div>

            <div class="skill-row">
                <img class="game-img" src="images/game.gif" alt="game">
                <h3>Lorem Ipsum Dolor</h3>
                <p>Lorem ipsum dolor sit amet, mauris sed consectetuer. Etiam et eu, bibendum interdum, lacus quis mauris. Curabitur wisi, quisque vel eu, rutrum nam.</p>
            </div>
        </div>
        <hr>

        <div class="contact-me">
            <h2>Get In Touch</h2>
            <h3>Lorem ipsum dolor sit amet, non elit.</h3>
            <p class="conatact-message">Lorem ipsum dolor sit amet, in quis, aenean amet. Phasellus sodales, tellus donec dui, ornare erat.</p>
            <a class="btn" href="mailto:name@email.com">CONTACT ME</a>
        </div>
    </div>

    <div class="bottom-container">
        <a class="footer-link" href="https://www.linkedin.com/">LinkedIn</a>
        <a class="footer-link" href="https://twitter.com/">Twitter</a>
        <a class="footer-link" href="https://www.appbrewery.co/">Website</a>
        <p class="copyright-message">ยฉ 2024 Name Surname.</p>
    </div>
</body>
</html>

๐ŸŽจstyle.css

body {
    color: #bf7f7f;
    margin: 0;
    text-align: center;
    font-family: "Merriweather", serif;
}

/* ์ œ๋ชฉ */
h1 {
    color: #4f3f38;
    margin: 50px auto 0 auto;
    font-size: 5.625rem;
    font-family: "Sacramento", cursive;
}

h2 {
    color: #4f3f38;
    font-size: 2.5rem;
    font-weight: normal;
    font-family: "Montserrat", sans-serif;
    padding-bottom: 10px;
}

h3 {
    color: #705C53;
    font-family: "Montserrat", sans-serif;
}

/* ๋‹จ๋ฝ์—์„œ ์ค„ ๊ฐ„ ๊ฐ„๊ฒฉ ๋„“ํžˆ๊ธฐ */
p {
    line-height: 2;
}

/* ์ˆ˜ํ‰์„  */
hr {
    border: dotted #F5F5F7 6px;
    border-bottom: none;
    width: 5%;
    margin: 100px auto;
}

/* ์•ต์ปค ํƒœ๊ทธ */
a {
    color: #4f3f38;
    font-family: "Montserrat", sans-serif;
    margin: 10px 20px;
    text-decoration: none;
}

a:hover {
    color: #f5f5f7;
}

/* ์ƒ์ž */
.top-container {
    background-color: #EDDFE0;
    position: relative;
    padding-top: 100px;
}

.middle-container {
    margin: 100px 0;
}

.bottom-container {
    background-color: #EDDFE0;
    padding: 50px 0 20px;
}

/* ๊ฐน์ข… ์—ฌ๋ฐฑ ๋ฐ ๋””ํ…Œ์ผ */
.skill-row {
    width: 50%;
    margin: 100px auto;
    text-align: left;
}

.pro {
    text-decoration: underline;
}

.intro {
    width: 30%;
    margin: auto;
}

.conatact-message {
    width: 40%;
    margin: 40px auto 60px;
}

.copyright-message {
    color: #f5f5f7;
    font-size: 0.75rem;
    padding: 20px 0;
}

/* ์ด๋ฏธ์ง€ */
.top-cloud {
    position: absolute;
    right: 300px;
    top: 40px;
}

.bottom-cloud {
    position: absolute;
    left: 250px;
    bottom: 300px;
}

.computer-img {
    width: 25%;
    float: left;
    margin-right: 30px;
}

.game-img {
    width: 25%;
    float: right;
    margin-left: 30px;
}

/* CONTACT ME ๋ฒ„ํŠผ */
.btn {
    background: #705c53;
    background-image: -webkit-linear-gradient(top, #705c53, #4f3f38);
    background-image: -moz-linear-gradient(top, #705c53, #4f3f38);
    background-image: -ms-linear-gradient(top, #705c53, #4f3f38);
    background-image: -o-linear-gradient(top, #705c53, #4f3f38);
    background-image: linear-gradient(to bottom, #705c53, #4f3f38);
    -webkit-border-radius: 8;
    -moz-border-radius: 8;
    border-radius: 8px;
    font-family: "Montserrat", sans-serif;
    color: #f5f5f7;
    font-size: 20px;
    padding: 10px 20px 10px 20px;
    text-decoration: none;
}

.btn:hover {
    background: #eddfe0;
    text-decoration: none;
}

์™„์„ฑ๋œ ์–‘์‹




โ–ท Angela Yu, [Python ๋ถ€ํŠธ์บ ํ”„ : 100๊ฐœ์˜ ํ”„๋กœ์ ํŠธ๋กœ Python ๊ฐœ๋ฐœ ์™„์ „ ์ •๋ณต], Udemy, https://www.udemy.com/course/best-100-days-python/?couponCode=ST3MT72524

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