Skip to content

๐Ÿงฉ Coding convention

์œ ๋™๊ท  edited this page Jul 28, 2023 · 11 revisions

์ฐธ๊ณ :
eslint-config-airbnb
Airbnb JavaScript Style Guide
Airbnb JavaScript Style Guide - kr
Integrating Prettier + ESLint + Airbnb Style Guide in VSCode

1. ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜

์ฝ”๋”ฉ ์ปจ๋ฒค์…˜, ๊ฐ€๋…์„ฑ์ด ์ข‹๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋”ฉ ์Šคํƒ€์ผ ๊ทœ์•ฝ. ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜์„ ์ค€์ˆ˜ํ•˜๋ฉด ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ฃผ๊ฑฐ๋‚˜ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์ž ์žฌ์  ์œ„ํ—˜ ์š”์†Œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

2. Airbnb Style Guide Install

  1. npm๊ณผ npx๋ฅผ ์„ค์น˜ํ•œ๋‹ค.
  2. VSCode ์ต์Šคํ…์…˜ ESLint, Prettier๋ฅผ ์„ค์น˜ํ•œ๋‹ค.
  3. ESLint์™€ Prettier ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ”„๋กœ์ ํŠธ์— ์„ค์น˜ํ•œ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
> npm install -D eslint prettier
  1. Airbnb config๋ฅผ ์„ค์น˜ํ•œ๋‹ค. npm 5+๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
> npx install-peerdeps --dev eslint-config-airbnb
  1. eslint-config-prettier์™€ eslint-plugin-prettier๋ฅผ ์„ค์น˜ํ•œ๋‹ค.
> npm install -D eslint-config-prettier eslint-plugin-prettier
  1. ํ”„๋กœ์ ํŠธ์˜ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— .eslintrc.json ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ๋‹ค์Œ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•œ๋‹ค.
{
  "extends": ["airbnb", "prettier"], //์ด ์„ค์ • ํŒŒ์ผ์€ airbnb ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ์™€ prettier์˜ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ๋ฅผ ํ™•์žฅํ•œ๋‹ค.
  "plugins": ["prettier"], //prettier ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•œ๋‹ค.
  "rules": {
    "prettier/prettier": ["error"], //prettier์—์„œ ๋ฐœ์ƒํ•œ ๋ชจ๋“  ์Šคํƒ€์ผ ๊ฒฝ๊ณ ๋ฅผ ์—๋Ÿฌ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.
    "no-unused-vars": "warn", //์„ ์–ธํ–ˆ์œผ๋‚˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ฒฝ๊ณ ๋กœ ํ‘œ์‹œํ•œ๋‹ค.
    "no-undef": "off" //์•Œ ์ˆ˜ ์—†๋Š” ๊ฐ’์— ๋Œ€ํ•ด ๊ฒฝ๊ณ ๋ฅผ ๋ˆ๋‹ค.
  },
  "env": {
    "browser": true, //๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ ์ž‘๋™ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•œ๋‹ค.
    "node": true, //Node ํ™˜๊ฒฝ์—์„œ ์ž‘๋™ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•œ๋‹ค.
    "es2021": true //ECMAScript 2021 ํ‘œ์ค€์„ ์ง€์›ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•œ๋‹ค.
  },
  "overrides": [
    {
      "env": {
        "node": true //Node ํ™˜๊ฒฝ์—์„œ ์ž‘๋™ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•œ๋‹ค.
      },
      "files": [".eslintrc.{js,cjs}"], //์ด ์„ค์ •์ด ์ ์šฉ๋˜๋Š” ํŒŒ์ผ๋“ค์˜ ํŒจํ„ด์„ ๋ช…์‹œํ•œ๋‹ค.
      "parserOptions": {
        "sourceType": "script" //์„ค์ • ํŒŒ์ผ์˜ ์†Œ์Šค ํƒ€์ž…์„ 'script'๋กœ ๋ช…์‹œํ•œ๋‹ค.
      }
    }
  ],
  "parserOptions": {
    "ecmaVersion": "latest", //๋งˆ์ง€๋ง‰ ECMASclima์˜ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ด ํŒŒ์‹ฑํ•œ๋‹ค.
    "sourceType": "module" //์ „์ฒด ํ”„๋กœ์ ํŠธ์˜ ์†Œ์Šค ํƒ€์ž…์„ 'module'๋กœ ๋ช…์‹œํ•œ๋‹ค.
  }
}
  1. ํ”„๋กœ์ ํŠธ์˜ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— .prettierrc ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  Prettier config file์„ ์ฐธ๊ณ ํ•˜์—ฌ ์›ํ•˜๋Š” ํฌ๋งทํŒ… ์˜ต์…˜์„ ์„ค์ •ํ•œ๋‹ค.
{
  "arrowParens": "avoid", // ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ๊ด„ํ˜ธ ์‚ฌ์šฉ ๋ฐฉ์‹
  "bracketSpacing": false, // ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์—์„œ ๊ด„ํ˜ธ์— ๊ณต๋ฐฑ ์‚ฝ์ž… ์—ฌ๋ถ€ 
  "endOfLine": "auto", // EoF ๋ฐฉ์‹, OS๋ณ„๋กœ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์ด ๋‹ค๋ฆ„ 
  "htmlWhitespaceSensitivity": "css", // HTML ๊ณต๋ฐฑ ๊ฐ๋„ ์„ค์ •
  "jsxBracketSameLine": false, // JSX์˜ ๋งˆ์ง€๋ง‰ `>`๋ฅผ ๋‹ค์Œ ์ค„๋กœ ๋‚ด๋ฆด์ง€ ์—ฌ๋ถ€ 
  "jsxSingleQuote": true, // JSX์— singe ์ฟผํ…Œ์ด์…˜ ์‚ฌ์šฉ ์—ฌ๋ถ€
  "printWidth": 100, //  ์ค„ ๋ฐ”๊ฟˆ ํ•  ํญ ๊ธธ์ด
  "proseWrap": "preserve", // markdown ํ…์ŠคํŠธ์˜ ์ค„๋ฐ”๊ฟˆ ๋ฐฉ์‹ (v1.8.2)
  "quoteProps": "as-needed", // ๊ฐ์ฒด ์†์„ฑ์— ์ฟผํ…Œ์ด์…˜ ์ ์šฉ ๋ฐฉ์‹
  "semi": true, // ์„ธ๋ฏธ์ฝœ๋ก  ์‚ฌ์šฉ ์—ฌ๋ถ€
  "singleQuote": true, // single ์ฟผํ…Œ์ด์…˜ ์‚ฌ์šฉ ์—ฌ๋ถ€
  "tabWidth": 2, // ํƒญ ๋„ˆ๋น„ 
  "trailingComma": "all", // ์—ฌ๋Ÿฌ ์ค„์„ ์‚ฌ์šฉํ•  ๋•Œ, ํ›„ํ–‰ ์ฝค๋งˆ ์‚ฌ์šฉ ๋ฐฉ์‹
  "useTabs": false, // ํƒญ ์‚ฌ์šฉ ์—ฌ๋ถ€
  "rangeStart": 0, // ํฌ๋งทํŒ…์„ ๋ถ€๋ถ„ ์ ์šฉํ•  ํŒŒ์ผ์˜ ์‹œ์ž‘ ๋ผ์ธ ์ง€์ •
  "requirePragma": false, // ํŒŒ์ผ ์ƒ๋‹จ์— ๋ฏธ๋ฆฌ ์ •์˜๋œ ์ฃผ์„์„ ์ž‘์„ฑํ•˜๊ณ  Pragma๋กœ ํฌ๋งทํŒ… ์‚ฌ์šฉ ์—ฌ๋ถ€ ์ง€์ • (v1.8.0)
  "insertPragma": false, // ๋ฏธ๋ฆฌ ์ •์˜๋œ @format marker์˜ ์‚ฌ์šฉ ์—ฌ๋ถ€ (v1.8.0)
  "overrides": [ 
    {
      "files": "*.json",
      "options": {
        "printWidth": 200
      }
    }
  ], // ํŠน์ • ํŒŒ์ผ๋ณ„๋กœ ์˜ต์…˜์„ ๋‹ค๋ฅด๊ฒŒ ์ง€์ •ํ•จ, ESLint ๋ฐฉ์‹ ์‚ฌ์šฉ
}
  1. VSCode์˜ User Setting ํŒŒ์ผ(setting.json)์— "editor.formatOnSave": true๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค.

3. ๋ช…๋ช… ๊ทœ์น™

  • ๋‹จ์–ด๋ฅผ ์ƒ๋žตํ•˜๊ฑฐ๋‚˜ ์•ฝ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋‹จ, HTML,URL ๋“ฑ๊ณผ ๊ฐ™์€ ๋ฒ”์šฉ์ ์ธ ์•ฝ์–ด๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์•ฝ์–ด ์‚ฌ์šฉ์‹œ์—๋Š” ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ์ž‘์„ฑํ•œ๋‹ค.
  • ํ•œ๊ธ€ ๋ฐœ์Œ์„ ๋กœ๋งˆ์ž๋กœ ๊ทธ๋Œ€๋กœ ํ‘œ๊ธฐํ•˜์ง€ ์•Š๋Š”๋‹ค
  • ํŠน์ˆ˜ ๋ฌธ์ž๋Š” ๊ฐ€๊ธ‰์  ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋‹จ, ์ƒ์ˆ˜์˜ ์ด๋ฆ„์—์„œ ๋‹จ์–ด๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„์™€ Private ์ง€์‹œ์ž ํ‘œ์‹œ๋ฅผ ์œ„ํ•˜์—ฌ ์–ธ๋”์Šค์ฝ”์–ด(_)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค
  • 2๊ธ€์ž ์ด์ƒ ๋Œ€๋ฌธ์ž๋ฅผ ์—ฐ์†ํ•ด์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋‹จ, ์ƒ์ˆ˜ ์ด๋ฆ„์ด๋‚˜ ์•ฝ์–ด๋Š” ์˜ˆ์™ธ๋กœ ํ•œ๋‹ค
  • ์ƒ์ˆ˜ ์ด๋ฆ„์ด๋‚˜ ์•ฝ์–ด ์ด๋ฆ„์„ ๋Œ€๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค
  • ์ด๋ฆ„์„ ํ†ตํ•ด ์—ญํ• ๊ณผ ๋ชฉ์ ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐ„๊ฒฐํ•˜๊ณ  ๋ช…๋ฃŒํ•˜๊ฒŒ ์ž‘์„ฑํ•œ๋‹ค

3.1 ํ•จ์ˆ˜: ์นด๋ฉœ ํ‘œ๊ธฐ๋ฒ• (CamelCase)

  • ๋™์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑํ•œ๋‹ค
  • ์นด๋ฉœ ํ‘œ๊ธฐ๋ฒ•์„ ์ค€์ˆ˜ํ•œ๋‹ค. ๋ณตํ•ฉ์–ด ์ด๋ฆ„์€ ์ฒซ ๋ฒˆ์งธ ๋‹จ์–ด๋ฅผ ์†Œ๋ฌธ์ž๋กœ ์ž‘์„ฑํ•˜๊ณ , ๋‘ ๋ฒˆ์งธ ์ด์ƒ์˜ ๋‹จ์–ด ์ฒซ ๊ธ€์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์ž‘์„ฑํ•˜์—ฌ ๋‹จ์–ด๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค.
  • Getter, Setter ๋ฉ”์†Œ๋“œ๋Š” ๋ฐ˜๋“œ์‹œ 'get + ๋ฉค๋ฒ„๋ณ€์ˆ˜ ์ด๋ฆ„', 'set + ๋ฉค๋ฒ„๋ณ€์ˆ˜ ์ด๋ฆ„' ํ˜•์‹์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค. ๋‹จ, Getter ๋ฉ”์†Œ๋“œ์˜ ๋ฐ˜ํ™˜๊ฐ’์ด Boolean ์ธ ๊ฒฝ์šฐ get ๋Œ€์‹  is ์กฐํ•ฉ์„ ์‚ฌ์šฉํ•œ๋‹ค
  • ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋ฉ”์†Œ๋“œ๋Š” handle + ์ด๋ฒคํŠธ๋ช… ์œผ๋กœ ์‹œ์ž‘ํ•˜๋„๋ก ์ •์˜ํ•œ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ œ๊ณตํ•˜๋Š” ์ด๋ฒคํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ ํŠน์ • ๋ชจ๋“ˆ์ด๋‚˜ ํ•จ์ˆ˜์—์„œ ๋น„๋™๊ธฐ ์ฝœ๋ฐฑ ํ•จ์ˆ˜(์ด๋ฒคํŠธ) ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋™์ผํ•˜๋‹ค.
// ๋‚˜์œ ์˜ˆ
apple();
car();

// ์ข‹์€ ์˜ˆ
isChecked();
getElement();

3.2 ๋ณ€์ˆ˜: ์นด๋ฉœ ํ‘œ๊ธฐ๋ฒ• (CamelCase)

  • ๋ณ€์ˆ˜๋ช…์€ ๊ธธ์–ด๋„ ์ข‹์œผ๋‹ˆ ํ•œ ๋ˆˆ์— ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์ตœ๋Œ€ํ•œ ๋ช…์‹œ์ ์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค
  • ๋ณ€์ˆ˜ ์ด๋ฆ„์€ ๋ช…์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑํ•œ๋‹ค
  • ์นด๋ฉœ ํ‘œ๊ธฐ๋ฒ•์„ ์ค€์ˆ˜ํ•œ๋‹ค. ๋ณตํ•ฉ์–ด ์ด๋ฆ„์€ ์ฒซ ๋ฒˆ์งธ ๋‹จ์–ด๋ฅผ ์†Œ๋ฌธ์ž๋กœ ์ž‘์„ฑํ•˜๊ณ , ๋‘ ๋ฒˆ์งธ ์ด์ƒ์˜ ๋‹จ์–ด ์ฒซ ๊ธ€์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์ž‘์„ฑํ•˜์—ฌ ๋‹จ์–ด๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค.
  • ๋ณ€์ˆ˜ ์ด๋ฆ„์˜ ์ฒซ ๊ธ€์ž๋กœ ์—ฐ์†๋œ ๋‘ ๊ฐœ์˜ ์–ธ๋”์Šค์ฝ”์–ด(__) ๊ธฐํ˜ธ์™€ ๋‹ฌ๋Ÿฌ ๊ธฐํ˜ธ($)๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋ณ€์ˆ˜ ์ด๋ฆ„์€ ํ•œ ๊ธ€์ž ์ด์ƒ์œผ๋กœ ์‚ฌ์šฉ ์˜๋„๋ฅผ ์ถฉ๋ถ„ํžˆ ์•Œ ์ˆ˜ ์žˆ์„ ๋งŒํผ ๊ฐ„๊ฒฐํ•˜๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ์ž‘์„ฑํ•œ๋‹ค. ๋‹จ, ์ž„์‹œ ๋ณ€์ˆ˜๋Š” ํ•œ ๊ธ€์ž ์ด๋ฆ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

3.3 ํŒŒ์ผ๋ช…

  • JavaScript ํŒŒ์ผ์€ ํ•˜๋‚˜์˜ ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜์— ์„œ๋ธŒ ๋””๋ ‰ํ† ๋ฆฌ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ์ž‘์„ฑํ•œ๋‹ค.
  • JavaScript ํŒŒ์ผ์€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ชจ๋“ˆ ๋‹จ์œ„๋กœ ๊ตฌ์„ฑํ•œ๋‹ค. ํŒŒ์ผ ์ด๋ฆ„ ๊ทœ์น™์€ ๊ฐ๊ฐ ๋„ค์ž„์ŠคํŽ˜์ด์Šค + ๋ชจ๋“ˆ ์ด๋ฆ„ ๊ทœ์น™์„ ๋”ฐ๋ฅธ๋‹ค

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-07-28 03 53 13

4. HTML/CSS

NHN ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜

4.1 HTML

  1. ์œ ํšจํ•˜๊ณ  ์ฝ์„ ์ˆ˜ ์žˆ๋Š” DOM ์ž‘์„ฑ
  2. ์ธ๋ผ์ธ ์Šคํƒ€์ผ๊ณผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ
  3. ์›น ์ ‘๊ทผ์„ฑ ์ค€์ˆ˜ํ•˜๊ธฐ
  4. ์ด๋ฏธ์ง€์— alt ํƒœ๊ทธ ์‚ฌ์šฉ
  5. ํŽ˜์ด์ง€ ๋‹จ ํ•˜๋‚˜์˜ h1
  6. ์ œ๋ชฉ ๋ฐ ๋ฉ”ํƒ€ ํƒœ๊ทธ ์‚ฌ์šฉ(SEO ์ตœ์ ํ™”)
  7. html์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌ
  8. ์ด๋ฏธ์ง€ ๋ฐ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ฒ€์‚ฌ

4.2 CSS

  1. class ๋ช…๋ช… ๊ทœ์น™ : ๋ณธ์ธ์ด ๋งก์€ ํŽ˜์ด์ง€ ๊ธฐ์ค€ e.g. <div class="login-wrapper"></div>

  2. ์—ฌ๋ฐฑ px๊ฐ’ ๋‹ค๋ฅผ ๋•Œ :

    • ์ขŒ์ธก ๊ธฐ์ค€ ์˜ฌ๋ฆผ์œผ๋กœ ์ง์ˆ˜ ๋งž์ถ”๊ธฐ
  3. ์ขŒ์šฐ px๊ฐ’ ๋‹ค๋ฅผ ๋•Œ :

    • ํฐ ๊ฐ’ ๊ธฐ์ค€์œผ๋กœ ์˜ฌ๋ฆผ์œผ๋กœ ๋งž์ถ”๊ธฐ
  4. ์ด๋ฏธ์ง€ export :

    • ์ด๋ฏธ์ง€ ํ™•์žฅ์ž๋Š” .png๋กœ ํ†ต์ผ
  5. ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ ์‚ฌ์šฉ

  6. ๋งˆ์ง„์ƒ์‡„ flex ์—์„œ๋Š” ๋งˆ์ง„์ƒ์‡„๊ฐ€ ์ผ์–ด๋‚˜์ง€ ์•Š์œผ๋‹ˆ ๊ณ ๋ คํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. flex๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๋ฐ‘์˜ ์‚ฌํ•ญ ์ง€ํ‚ค๊ธฐ ์ž์‹ ์š”์†Œ๋Š” margin-top ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค. ๋ถ€๋ชจ ์š”์†Œ๋Š” padding ์œผ๋กœ ์กฐ์ ˆ, margin ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋นˆ ์š”์†Œ๋Š” height , min-height , max-height ์…‹ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ค€๋‹ค.

  7. ์ƒํ™ฉ์— ๋”ฐ๋ฅธ ์ ์ ˆํ•œ ๋‹จ์œ„ ์‚ฌ์šฉ

  8. rem ๋‹จ์œ„

    • ํฐํŠธ์‚ฌ์ด์ฆˆ, ๋งˆ์ง„, ํŒจ๋”ฉ.
  9. px ๋‹จ์œ„

    • ๋ธŒ๋ผ์šฐ์ € ํฌ๊ธฐ ์ƒ๊ด€์—†์ด ์ •ํ™•ํžˆ ๊ณ ์ •๋œ ์‚ฌ์ด์ฆˆ์—ฌ์•ผ ํ•  ๋•Œ.
      • border-radius, border-line
  10. ๋ฐฑ๋ถ„์œจ(%) ๋‹จ์œ„

    • ๊ฐ€๋กœ ๋น„์œจ์— ๋”ฐ๋ฅธ ๋ฐ˜์‘ํ˜•์— ์‚ฌ์šฉํ•œ๋‹ค.(๋ถ€๋ชจ ์š”์†Œ์˜ ํฌ๊ธฐ์— ์˜ํ–ฅ์„ ๋ฐ›์Œ)
    • ์ด๋ฏธ์ง€์— ์‚ฌ์šฉ.
      • ๋„ˆ๋น„๋ฅผ ์ฃผ๊ณ , ์„ธ๋กœ๋Š” auto๋กœ ํ•˜์—ฌ ์ข…ํšก๋น„๋ฅผ ๋งž์ถฐ ๋Š˜์–ด๋‚˜๊ณ  ์ค„์–ด๋“ค๊ฒŒ ํ•œ๋‹ค.(global style์— ์ ์šฉ๋˜์–ด์žˆ๋‹ค.)
    • vh(viewport height) ๋‹จ์œ„
      • ์„ธ๋กœ ๋น„์œจ์— ๋”ฐ๋ฅธ ๋ฐ˜์‘ํ˜•์— ์‚ฌ์šฉํ•œ๋‹ค.(๋ณด์—ฌ์ง€๋Š” ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์— ์˜ํ–ฅ์„ ๋ฐ›์Œ)
  11. float, flex, grid

    • ์ฃผ ๋ ˆ์ด์•„์›ƒ์€ flex๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.
    • float์™€ grid๋Š” ์‚ฌ์šฉ์„ ์ง€์–‘ํ•œ๋‹ค.