✏️ 2024. 12μ›” 21일 / html + css μ–Έμ–΄, μ½”λ”© κ³ κΈ‰ 18

πŸ‘€ transition 효과λ₯Ό μ‚¬μš©ν•˜μ—¬ μ•„μ½”λ””μ–Έ 메뉴λ₯Ό λ§Œλ“€μ–΄λ΄…μ‹œλ‹€.
✨ μ•„μ½”λ””μ–Έ 메뉴 : 마우슀λ₯Ό μ˜¬λ Έμ„λ•Œ 2μ°¨ 메뉴가 샀라락 ν•˜κ³  νŽΌμ³μ§€λŠ” ν˜•νƒœμ˜ λ©”λ‰΄μž…λ‹ˆλ‹€.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>μ•„μ½”λ””μ–Έ 메뉴 λ§Œλ“€κΈ°</title>
    <style>
      @import url("https://fonts.googleapis.com/css2?family=Tektur:wght@400..900&display=swap");
      body {
        font-family: "Tektur", serif;
      }
      * {
        margin: 0;
        padding: 0;
      }
      ul,
      li {
        list-style: none;
      }
      a {
        text-decoration: none;
        color: #222;
      }
      /* μ„Έλ‘œ 메뉴 */
      .nav {
        width: 200px;
        /* 샀라락 효과λ₯Ό μ£ΌκΈ° μœ„ν•΄ 적용 */
        overflow: hidden;
        position: relative;
      }
      .nav li {
        font-size: 16px;
        background-color: rgb(240, 240, 240);
        text-align: center;
        font-weight: 700;
        border-bottom: 1px solid rgb(239, 239, 239);
        line-height: 40px;
        box-sizing: border-box;
        cursor: pointer;
        color: #222;
      }
      /* 2μ°¨ 메뉴 */
      .submenu li {
        font-size: 14px;
        font-weight: 500;
        background-color: rgb(249, 249, 249);
      }
      .submenu li:last-child {
        border-bottom: 0;
      }
      .submenu li:hover a {
        color: rgb(255, 66, 195);
      }
      /* submenu의 높이λ₯Ό 0으둜 λ§Œλ“¦
      높이가 μ—†μ–΄μ„œ κΈ€μžλ“€μ΄ 겹쳐짐 */
      .submenu {
        height: 0px;
        overflow: hidden;
        transition: 0.5s;
      }
      /* 1μ°¨ 메뉴에 마우슀λ₯Ό 올리면 .submenu의 높이λ₯Ό 160px둜 λ§Œλ“€μ–΄μ„œ 2μ°¨ 메뉴λ₯Ό 보여쀀닀. */
      .nav > li:hover .submenu {
        height: 160px;
      }
    </style>
  </head>
  <body>
    <ul class="nav">
      <li>
        menu1
        <ul class="submenu">
          <li><a href="#">menu1-1</a></li>
          <li><a href="#">menu1-2</a></li>
          <li><a href="#">menu1-3</a></li>
          <li><a href="#">menu1-4</a></li>
        </ul>
      </li>
      <li>
        menu2
        <ul class="submenu">
          <li><a href="#">menu2-1</a></li>
          <li><a href="#">menu2-2</a></li>
          <li><a href="#">menu2-3</a></li>
          <li><a href="#">menu2-4</a></li>
        </ul>
      </li>
      <li>
        menu3
        <ul class="submenu">
          <li><a href="#">menu3-1</a></li>
          <li><a href="#">menu3-2</a></li>
          <li><a href="#">menu3-3</a></li>
          <li><a href="#">menu3-4</a></li>
        </ul>
      </li>
      <li>
        menu4
        <ul class="submenu">
          <li><a href="#">menu4-1</a></li>
          <li><a href="#">menu4-2</a></li>
          <li><a href="#">menu4-3</a></li>
          <li><a href="#">menu4-4</a></li>
        </ul>
      </li>
      <li>
        menu5
        <ul class="submenu">
          <li><a href="#">menu5-1</a></li>
          <li><a href="#">menu5-2</a></li>
          <li><a href="#">menu5-3</a></li>
          <li><a href="#">menu5-4</a></li>
        </ul>
      </li>
    </ul>
  </body>
</html>

μ•„μ½”λ””μ–Έ 메뉴 ν˜•νƒœμ—μ„œ ꡬ쑰만 쑰금 λ°”κΏ”μ£Όλ©΄ κ°€λ‘œλ‘œ λ‚˜μ˜€λŠ” gnb 메뉴λ₯Ό λ§Œλ“€μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>κ°€λ‘œ 메뉴 λ§Œλ“€κΈ°</title>
    <style>
      @import url("https://fonts.googleapis.com/css2?family=Tektur:wght@400..900&display=swap");
      body {
        font-family: "Tektur", serif;
      }
      * {
        margin: 0;
        padding: 0;
      }
      ul,
      li {
        list-style: none;
      }
      a {
        text-decoration: none;
        color: #222;
      }
      /* μ„Έλ‘œ 메뉴 */
      .nav {
        width: 1000px;
        /* 샀라락 효과λ₯Ό μ£ΌκΈ° μœ„ν•΄ 적용 */
        overflow: hidden;
        /* μ›ν™œν•œ μž‘μ—…μ„ μœ„ν•΄ ν¬μ§€μ…˜ νƒœκ·Έλ₯Ό 걸어놓고 μž‘μ—… */
        position: relative;
        display: flex;
      }
      .nav > li {
        font-size: 16px;
        background-color: rgb(240, 240, 240);
        text-align: center;
        font-weight: 700;
        border-bottom: 1px solid rgb(239, 239, 239);
        line-height: 40px;
        box-sizing: border-box;
        cursor: pointer;
        color: #222;
        width: 200px;
      }
      /* 2μ°¨ 메뉴 */
      .submenu li {
        font-size: 14px;
        font-weight: 500;
        background-color: rgb(249, 249, 249);
      }
      .submenu li:last-child {
        border-bottom: 0;
      }
      .submenu li:hover a {
        color: rgb(255, 66, 195);
      }
      /* submenu의 높이λ₯Ό 0으둜 λ§Œλ“¦
      높이가 μ—†μ–΄μ„œ κΈ€μžλ“€μ΄ 겹쳐짐 */
      .submenu {
        height: 0px;
        overflow: hidden;
        transition: 0.5s;
      }
      /* .nav > li .submenu 1μ°¨ 메뉴에 마우슀λ₯Ό 올리면 .submenu의 높이λ₯Ό 160px둜 λ§Œλ“€μ–΄μ„œ 2μ°¨ 메뉴λ₯Ό 보여쀀닀. */
      /* 전체 메뉴 λ‚΄λ €μ˜€κ²Œ ν•˜κΈ° */
      .nav:hover > li .submenu {
        height: 160px;
      }
    </style>
  </head>
  <body>
    <ul class="nav">
      <li>
        menu1
        <ul class="submenu">
          <li><a href="#">menu1-1</a></li>
          <li><a href="#">menu1-2</a></li>
          <li><a href="#">menu1-3</a></li>
          <li><a href="#">menu1-4</a></li>
        </ul>
      </li>
      <li>
        menu2
        <ul class="submenu">
          <li><a href="#">menu2-1</a></li>
          <li><a href="#">menu2-2</a></li>
          <li><a href="#">menu2-3</a></li>
          <li><a href="#">menu2-4</a></li>
        </ul>
      </li>
      <li>
        menu3
        <ul class="submenu">
          <li><a href="#">menu3-1</a></li>
          <li><a href="#">menu3-2</a></li>
          <li><a href="#">menu3-3</a></li>
          <li><a href="#">menu3-4</a></li>
        </ul>
      </li>
      <li>
        menu4
        <ul class="submenu">
          <li><a href="#">menu4-1</a></li>
          <li><a href="#">menu4-2</a></li>
          <li><a href="#">menu4-3</a></li>
          <li><a href="#">menu4-4</a></li>
        </ul>
      </li>
      <li>
        menu5
        <ul class="submenu">
          <li><a href="#">menu5-1</a></li>
          <li><a href="#">menu5-2</a></li>
          <li><a href="#">menu5-3</a></li>
          <li><a href="#">menu5-4</a></li>
        </ul>
      </li>
    </ul>
  </body>
</html>

πŸ‘€ μ• λ‹ˆλ©”μ΄μ…˜ 속성에 λŒ€ν•΄ μ•Œμ•„λ΄…μ‹œλ‹€.
✨ animation : λΈŒλΌμš°μ €κ°€ λ‘œλ”©λ˜λŠ” μˆœκ°„ λͺ¨μ…˜μ„ μ§„ν–‰ν•˜λŠ” μ• λ‹ˆλ©”μ΄μ…˜ μ†μ„±μž…λ‹ˆλ‹€.
μ• λ‹ˆλ©”μ΄μ…˜ 속성은 μ‚¬μš©μžμ˜ λ™μž‘κ³ΌλŠ” 관계없이 ν˜Όμžμ„œ μ›€μ§μž„μ„ λ§Œλ“­λ‹ˆλ‹€.
`μ΄λ•Œ μ• λ‹ˆλ©”μ΄μ…˜μ˜ ν•˜μœ„μ†μ„±κ³Ό @keyframes λͺ¨λ“ˆμ„ μ΄μš©ν•˜μ—¬ μ›€μ§μž„μ„ λ§Œλ“­λ‹ˆλ‹€.``

     [속성]
     - animation : ν•˜μœ„ 속성듀을 ν•œκΊΌλ²ˆμ— μ„ μ–Έν•  λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.
                   μ†μ„±λΌλ¦¬λŠ” 곡백으둜 κ΅¬λΆ„ν•©λ‹ˆλ‹€.
     - animation-delay : μ• λ‹ˆλ©”μ΄μ…˜μ˜ μ§€μ—°μ‹œκ°„μ„ μ§€μ •ν•©λ‹ˆλ‹€.
                         λ‹¨μœ„λŠ” sλ₯Ό μ‚¬μš©ν•˜κ³  μ§€μ •λœ μ‹œκ°„μ΄ μ§€λ‚˜λ©΄ κ·Έλ•Œ μ• λ‹ˆλ©”μ΄μ…˜μ„ μ‹€ν–‰ν•©λ‹ˆλ‹€.
     - animation-direction : μ• λ‹ˆλ©”μ΄μ…˜μ˜ μ§„ν–‰ λ°©ν–₯을 μ„€μ •ν•©λ‹ˆλ‹€. 속성 κ°’μœΌλ‘œλŠ” μ•„λž˜μ˜ 속성 값듀을 μ‚¬μš©ν•©λ‹ˆλ‹€.
     1. alternate : μ• λ‹ˆλ©”μ΄μ…˜μ˜ μ‹œμž‘ μ§€μ μ—μ„œ λλ‚˜λŠ” μ§€μ μœΌλ‘œ μ΄λ™ν–ˆλ‹€κ°€ λλ‚˜λŠ” μ§€μ μ—μ„œ λ‹€μ‹œ μ‹œμž‘ μ§€μ μœΌλ‘œ μ΄λ™ν•©λ‹ˆλ‹€. (from>to>from)
     2. normal : 기본값이며 μ‹œμž‘μ§€μ μ—μ„œ λλ‚˜λŠ” μ§€μ μœΌλ‘œ μ΄λ™ν•˜λŠ” 것을 λ°˜λ³΅ν•©λ‹ˆλ‹€.
     3. reverse : μ—­λ°•ν–₯으둜 μ›€μ§μž…λ‹ˆλ‹€.
     4. alternate-reverse : μ—­λ°©ν–₯으둜 μ›€μ§μ˜€λ‹€κ°€ μ •λ°©ν–₯으둜 움직인닀.
     - animation-iteration-count : μ• λ‹ˆλ©”μ΄μ…˜μ˜ 반볡 횟수λ₯Ό κ²½μ •ν•©λ‹ˆλ‹€. λ‹¨μœ„ 없이 숫자만 μ“°κ±°λ‚˜ infinite 값을 μ“Έ 수 μžˆμŠ΅λ‹ˆλ‹€.
                                   infiniteλŠ” λ¬΄ν•œ λ°˜λ³΅μ„ λ§ν•©λ‹ˆλ‹€.
     - animation-name : μ• λ‹ˆλ©”μ΄μ…˜μ˜ 이름을 μ§€μ •ν•©λ‹ˆλ‹€. classλ‚˜ id 이름 짓듯이 μ§€μ–΄μ€λ‹ˆλ‹€.
                        β˜… ν•„μˆ˜ 속성이며 μ• λ‹ˆλ©”μ΄μ…˜μ˜ 이름이 μ—†μœΌλ©΄ λ™μž‘ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
     - animation-play-state : μ• λ‹ˆλ©”μ΄μ…˜μ˜ μž¬μƒ μƒνƒœλ₯Ό μ§€μ •ν•©λ‹ˆλ‹€. 보톡 :hover μ„ νƒμžμ™€ ν•¨κ»˜ μ‚¬μš©ν•©λ‹ˆλ‹€.
                              μ‚¬μš©μžκ°€ 마우슀λ₯Ό μ˜¬λ¦¬κ±°λ‚˜ μ–΄λ–€ λ™μž‘μ„ ν•˜λ©΄ μ• λ‹ˆλ©”μ΄μ…˜μ˜ λ™μž‘μ„ λ©ˆμΆ”κ±°λ‚˜ λ‹€μ‹œ μž¬μƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
                              값은 running(μž¬μƒν•˜λ‹€)μ΄λ‚˜ paused(λ©ˆμΆ”λ‹€)λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
     - animation-timing-function : μ• λ‹ˆλ©”μ΄μ…˜μ˜ 속도λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€. κ°’μœΌλ‘œλŠ” transition-timing-function의 κ°’κ³Ό λ™μΌν•œ 값을 μ‚¬μš©ν•©λ‹ˆλ‹€.
                                   (ease, ease-in, ease out, ease-in-out, linear)
     - animation-fill-mode : 끝났을 λ•Œ λͺ¨μŠ΅μ„ μœ μ§€ν•  것인지λ₯Ό κ²°μ •ν•©λ‹ˆλ‹€.
                             backwardsλŠ” κΈ°λ³Έκ°’μœΌλ‘œ μ• λ‹ˆλ©”μ΄μ…˜μ΄ λλ‚˜λ©΄ μ›λž˜ 있던 μœ„μΉ˜λ‘œ λŒμ•„κ°‘λ‹ˆλ‹€. (μ΄ˆκΈ°μœ„μΉ˜)
                             forwardsλŠ” μ• λ‹ˆλ©”μ΄μ…˜μ˜ μ’…λ£Œ μœ„μΉ˜μ—μ„œ κ·ΈλŒ€λ‘œ 자리λ₯Ό μœ μ§€ν•©λ‹ˆλ‹€. (μ’…λ£Œ μœ„μΉ˜)

πŸ‘€ @keyframes λͺ¨λ“ˆμ— λŒ€ν•΄ μ•Œμ•„λ΄…μ‹œλ‹€.
✨ @keyframes : animation으둜 ν•΄λ‹Ή νƒœκ·Έμ— μ›€μ§μž„μ„ μ„€μ •ν–ˆλ‹€λ©΄ μ‹€μ œ μ›€μ§μ΄λŠ” λ™μž‘μ€ @keyframes λͺ¨λ“ˆμ΄ λ‹΄λ‹Ήν•©λ‹ˆλ‹€.
@keyframes λͺ¨λ“ˆμ€ μ§€μ •λœ μ‹œκ°„μ•ˆμ— μ–΄λ–€ λ™μž‘μ„ λ§Œλ“€κ²ƒμΈμ§€λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€.
μ• λ‹ˆλ©”μ΄μ…˜μ˜ λͺ¨μ…˜ 효과λ₯Ό μ§€μ •ν•  λ•Œ 이것을 'ν‚€ν”„λ ˆμž„'이라고 λΆ€λ¦…λ‹ˆλ‹€.
ν‚€ν”„λ ˆμž„μ€ μ• λ‹ˆλ©”μ΄μ…˜μ΄ λ³€κ²½λ˜λŠ” λͺ¨λ“  지점을 λ§ν•©λ‹ˆλ‹€.
@keyframes 섀정을 ν•  λ•Œμ—λŠ” ν‚€ν”„λ ˆμž„ μ•ˆμ—μ„œ μ‹œκ°„μ— μ˜ν•΄ λ³€ν™”λ˜λŠ” 뢀뢄을 'μ„ νƒμž'둜 κ΅¬λΆ„ν•©λ‹ˆλ‹€.
μ„ νƒμžλŠ” 0% λ˜λŠ” from이라고 μ“°λ©΄ μ• λ‹ˆλ©”μ΄μ…˜μ˜ μ‹œμž‘μ§€μ (0초 지점)을 λ§ν•˜κ³ , 100% λ˜λŠ” to라고 μ“°λ©΄ μ• λ‹ˆλ©”μ΄μ…˜μ΄ λλ‚˜λŠ” 지점을 λ§ν•©λ‹ˆλ‹€.

[κΈ°λ³Έν˜•]
     μ„ νƒμž{
      animation : 속성1 속성2....;
     }
      @keyframes μ• λ‹ˆλ©”μ΄μ…˜ 이름{
      from λ˜λŠ” 0% { μŠ€νƒ€μΌ 속성: κ°’ }
      50% { μŠ€νƒ€μΌ 속성 : κ°’ }
      to λ˜λŠ” 100% { μŠ€νƒ€μΌ 속성 : κ°’ }
      }

πŸ‘€ will-change에 λŒ€ν•΄ μ•Œμ•„λ΄…μ‹œλ‹€.
✨ will-change : transitionμ΄λ‚˜ animation μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” λ™μ•ˆ λΈŒλΌμš°μ €μ— κΉœλΉ‘μž„μ΄λ‚˜ λ–¨λ¦Όν˜„μƒμ΄ 생길 수 μžˆμŠ΅λ‹ˆλ‹€.
will-change속성은 λΈŒλΌμš°μ €μ—κ²Œ μš”μ†Œμ˜ μ˜ˆμƒ λ³€κ²½ 사항을 μ•Œλ €μ£ΌλŠ” μ†μ„±μž…λ‹ˆλ‹€.
이 속성을 μ‚¬μš©ν•˜λ©΄ λΈŒλΌμš°μ €λŠ” μš”μ†Œκ°€ μ‹€μ œλ‘œ μŠ€νƒ€μΌ λ³€ν˜•μ΄ ν•„μš”ν•  λ•Œ
ν•„μš”ν•œ λ¦¬μ†ŒμŠ€λ₯Ό 사전에 μ΅œμ ν™” ν•˜μ—¬ μš”μ†Œμ— μŠ€νƒ€μΌ λ³€κ²½κ³Ό λžœλ”λ§μ„ 더 λΉ λ₯΄κ³  μ΅œμ ν™” 된 λ°©μ‹μœΌλ‘œ 처리 ν•©λ‹ˆλ‹€.
will-change의 μ†μ„±κ°’μœΌλ‘œλŠ” μ• λ‹ˆλ©”μ΄μ…˜(ν‚€ν”„λ ˆμž„)κ³Ό transition λ˜λŠ” transform으둜 λ³€ν™”μ‹œν‚¬ μ†μ„±μ˜ 속성λͺ…을 μ‚¬μš©ν•©λ‹ˆλ‹€.

[will-change에 λ„£μ–΄μ£Όλ©΄ 쒋은 속성값]
      - auto : λ³€κ²½ μ˜ˆμ •μΈ 속성에 λŒ€ν•œ μ΅œμ ν™”λ₯Ό μžλ™μœΌλ‘œ μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ λΈŒλΌμš°μ €κ°€ κ²°μ •ν•©λ‹ˆλ‹€.
      - scroll-position : 슀크둀 μœ„μΉ˜μ— λŒ€ν•œ μ΅œμ ν™”λ₯Ό μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ λΈŒλΌμš°μ €κ°€ μžλ™μœΌλ‘œ μ²˜λ¦¬ν•©λ‹ˆλ‹€.
      - contents : μš”μ†Œ λ‚΄μš©μ˜ 변경에 λŒ€ν•œ μ΅œμ ν™”λ₯Ό μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ λΈŒλΌμš°μ €κ°€ μžλ™μœΌλ‘œ μ²˜λ¦¬ν•©λ‹ˆλ‹€.
      - opacity : 투λͺ…도 변경에 λŒ€ν•œ μ΅œμ ν™”λ₯Ό μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ λΈŒλΌμš°μ €κ°€ μžλ™μœΌλ‘œ μ²˜λ¦¬ν•©λ‹ˆλ‹€.
      - transform : λ³€ν˜• 속성에 λŒ€ν•œ μ΅œμ ν™”λ₯Ό μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ λΈŒλΌμš°μ €κ°€ μžλ™μœΌλ‘œ μ²˜λ¦¬ν•©λ‹ˆλ‹€.
      - perspective : 원근감 변경에 λŒ€ν•œ μ΅œμ ν™”λ₯Ό μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ λΈŒλΌμš°μ €κ°€ μžλ™μœΌλ‘œ μ²˜λ¦¬ν•©λ‹ˆλ‹€.
      - left/top/right/bottom : μ’Œν‘œκ°’ 변경에 λŒ€ν•œ μ΅œμ ν™”λ₯Ό μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ λΈŒλΌμš°μ €κ°€ μžλ™μœΌλ‘œ μ²˜λ¦¬ν•©λ‹ˆλ‹€.
      - filter : filter 속성에 λŒ€ν•œ μ΅œμ ν™”λ₯Ό μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ λΈŒλΌμš°μ €κ°€ μžλ™μœΌλ‘œ μ²˜λ¦¬ν•©λ‹ˆλ‹€.
      - color / background-color : 색상 변경에 λŒ€ν•œ μ΅œμ ν™”λ₯Ό μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ λΈŒλΌμš°μ €κ°€ μžλ™μœΌλ‘œ μ²˜λ¦¬ν•©λ‹ˆλ‹€.
      - all : λͺ¨λ“  변경에 λŒ€ν•œ μ΅œμ ν™”λ₯Ό μœ„ν•΄ λΈŒλΌμš°μ €κ°€ μžλ™μœΌλ‘œ μ²˜λ¦¬ν•œλ‹€.

πŸ‘€ object-fit에 λŒ€ν•΄ μ•Œμ•„λ΄…μ‹œλ‹€.
✨ object-fit : μ΄λ―Έμ§€λ‚˜ λΉ„λ””μ˜€λ“± 컨텐츠가 μ‚¬μš©λœ 높이와 넓이에 따라 μ„€μ •λœ λΆ€λͺ¨ μš”μ†Œμ— μ–΄λ–»κ²Œ λ§žμΆ°μ Έμ•Ό ν•˜λŠ”μ§€ κ²°μ •ν•©λ‹ˆλ‹€.
μ›Ή λ¬Έμ„œμ—μ„œ μ΄λ―Έμ§€λ‚˜ λΉ„λ””μ˜€ 같은 μ‹œκ° μš”μ†ŒλŠ” λ°˜μ‘ν˜•μœΌλ‘œ 크기가 λ°”λ€Œλ©΄
μ›λž˜ μ΄λ―Έμ§€λ‚˜ λΉ„λ””μ˜€μ˜ κ°€λ‘œ μ„Έλ‘œ λΉ„μœ¨μ„ κ·ΈλŒ€λ‘œ μœ μ§€ν•˜κΈ° μ–΄λ ΅λ‹€.
object-fit을 μ‚¬μš©ν•˜λ©΄ 컨텐츠(μ΄λ―Έμ§€λ‚˜ λΉ„λ””μ˜€)의 κ°€λ‘œ μ„Έλ‘œ λΉ„μœ¨μ„ μœ μ§€ν•˜λ©΄μ„œ 해상도에 맞게 이미지 크기λ₯Ό μ‘°μ ˆν•  수 μžˆμŠ΅λ‹ˆλ‹€.

[속성값]
   - fill : κΈ°λ³Έκ°’μœΌλ‘œ μ»¨ν…μΈ μ˜ μ›λž˜ λΉ„μœ¨μ„ λ¬΄μ‹œν•˜κ³  μš”μ†Œμ˜ 전체 μ˜μ—­μ„ μ±„μ›λ‹ˆλ‹€. 
   - contain : λΉ„μœ¨μ„ μœ μ§€ν•˜λ©΄μ„œ μš”μ†Œμ˜ 전체 μ˜μ—­μ— 맞좜 수 μžˆμ„λ§ŒνΌ ν™•λŒ€ν•©λ‹ˆλ‹€.
               μ˜μ—­μ„ λͺ¨λ‘ μ±„μš°μ§€ λͺ»ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
   - cover :  λΉ„μœ¨μ„ μœ μ§€ν•˜λ©΄μ„œ μš”μ†Œμ˜ 전체 μ˜μ—­μ— 맞좜 수 μžˆμ„λ§ŒνΌ ν™•λŒ€ν•©λ‹ˆλ‹€.
              μ˜μ—­μ„ μ±„μšΈ λ•Œ μ»¨ν…μΈ μ˜ 일뢀λ₯Ό 자λ₯Ό μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
   - none : μ»¨ν…μΈ μ˜ μ›λž˜ 크기λ₯Ό μœ μ§€ν•©λ‹ˆλ‹€.
   - scale-down : noneκ³Ό contain쀑 크기가 더 μž‘μ•„μ§€λŠ” κ°’μœΌλ‘œ μ„€μ •ν•œλ‹€.

πŸ‘€ CSS의 μŠ€νƒ€μΌκ°€μ΄λ“œ! :root와 var에 λŒ€ν•΄ μ•Œμ•„λ΄…μ‹œλ‹€.
✨ :rootμ„ νƒμž
cssκ°€ 처음 λ“±μž₯ν–ˆμ„ λ•Œμ—λŠ” λ‹¨μˆœν•œ μŠ€νƒ€μΌλ§λ§Œ κ°€λŠ₯ν–ˆμŠ΅λ‹ˆλ‹€.
예λ₯Ό λ“€μ–΄μ„œ, μƒ‰μƒμ΄λ‚˜ κΈ€κΌ΄, 쀄간격 λ“± μ‚¬μ΄νŠΈμ˜ 겉λͺ¨μŠ΅λ§Œ μ œμ–΄ν•˜λŠ” μ†μ„±λ§Œ μ œκ³΅ν–ˆμŠ΅λ‹ˆλ‹€.
ν•˜μ§€λ§Œ μ›ΉνŽ˜μ΄μ§€μ™€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 점점 더 λ³΅μž‘ν•΄μ§€λ©΄μ„œ μŠ€νƒ€μΌμ„ 더 μ„Έλ°€ν•˜κ²Œ μ œμ–΄ν•  방법이 ν•„μš”ν•΄μ‘ŒμŠ΅λ‹ˆλ‹€.
κ·Έλ ‡κ²Œ λ“±μž₯ν•œ 것이 css ν•¨μˆ˜ μž…λ‹ˆλ‹€.
css ν•¨μˆ˜λŠ” νŠΉμ • κΈ°λŠ₯을 λ§ν•˜λ©° ()μ•ˆμ— μ˜¬λ°”λ₯Έ 값을 λ„£μ–΄ μ‹€ν–‰ν•©λ‹ˆλ‹€.
:rootμ„ νƒμžλŠ” λ¬Έμ„œμ˜ μ΅œμƒμœ„ μš”μ†Œλ₯Ό λ§ν•©λ‹ˆλ‹€. 즉, html νƒœκ·Έλ₯Ό λ§ν•©λ‹ˆλ‹€.
:rootλ₯Ό μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” cssμ—μ„œ 'λ³€μˆ˜'λΌλŠ” 것을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œ μž…λ‹ˆλ‹€.
:rootλŠ” μ›Ήλ¬Έμ„œμ—μ„œ μ‚¬μš©ν•  μŠ€νƒ€μΌλ“€μ„ μ „μ²΄μ μœΌλ‘œ μ„ μ–Έν•˜λŠ” κ³΅κ°„μœΌλ‘œ, μΌμ’…μ˜ 'μŠ€νƒ€μΌ κ°€μ΄λ“œ'둜 μ‚¬μš©ν•©λ‹ˆλ‹€.
:rootμ•ˆμ— μ‚¬μš©ν•  μŠ€νƒ€μΌμ„ λ³€μˆ˜λ‘œ μ„ μ–Έν•˜λ©΄ 일관적인 λ””μžμΈμ„ μ‰½κ²Œ μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
✨ CSS λ³€μˆ˜
λ³€μˆ˜λž€ ν•„μš”ν• λ•Œλ§ˆλ‹€ 값을 μ €μž₯해놓고 μ‚¬μš©ν•˜λŠ” 데이터 그릇을 λ§ν•©λ‹ˆλ‹€.
이 데이터가 λ°”λ€Œμ–΄μ•Ό ν•œλ‹€λ©΄ κ·Έ 값을 λ°”κΏ€ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
cssμ—μ„œ μ‚¬μš©ν•˜λŠ” λ³€μˆ˜λŠ” 마치 ν”Όκ·Έλ§ˆμ˜ μ»΄ν¬λ„ŒνŠΈμ²˜λŸΌ 일관적인 λ””μžμΈμ„ μœ μ§€ν•˜κΈ° μœ„ν•΄
미리 μ›Ή λ¬Έμ„œμ—μ„œ μ‚¬μš©ν•  속성과 μŠ€νƒ€μΌμ— 이름을 λΆ™μ—¬μ„œ μ €μž₯ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.
cssλ³€μˆ˜λ₯Ό μ“°λŠ” 방법은 :root의 {}μ•ˆμ— ν•˜μ΄ν”ˆ λ‘κ°œλ₯Ό μ•žμ— λΆ™μ—¬ λ³€μˆ˜ 이름을 μ§€μ–΄μ„œ μ‚¬μš©ν•©λ‹ˆλ‹€.
단, λ³€μˆ˜ 이름을 지을 λ•Œμ—λŠ” μ†Œλ¬Έμžλ‘œλ§Œ μ§€μ–΄μ•Ό ν•©λ‹ˆλ‹€.

[κΈ°λ³Έν˜•]
     :root{
      --λ³€μˆ˜μ΄λ¦„ : κ°’;
     }
     var()
==================================================================
     λ³€μˆ˜μ— μ €μž₯ν–ˆλ˜ 값을 ν‘œμ‹œν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
     값을 ν‘œμ‹œν• λ•Œμ—λŠ” var()μ†Œκ΄„ν˜Έ μ•ˆμ— '--λ³€μˆ˜μ΄λ¦„'을 λ„£μœΌλ©΄
     그에 ν•΄λ‹Ήν•˜λŠ” 값이 μ μš©λ©λ‹ˆλ‹€.
     [κΈ°λ³Έν˜•]
     μ„ νƒμž{
      color : var(--λ³€μˆ˜μ΄λ¦„);
     }

πŸ—¨οΈ μ†μœΌλ‘œ 직접 κ³΅λΆ€ν•œ λ‚΄μš©μ„ λ°”νƒ•μœΌλ‘œ μž‘μ„±ν•œ κΈ€μ΄λžλ‹ˆλ‹€ !
βœ–οΈ
μ•žμœΌλ‘œλ„ μ—΄μ‹¬νžˆ κ³΅λΆ€ν•΄μ„œ λ§Žμ€ λ‚΄μš©μ„ κ³΅μœ ν•˜κ² μŠ΅λ‹ˆλ‹€ :)

profile
🎧 α΄˜ΚŸα΄€ΚΙͺΙ΄Ι’: UXUI (Feat: coding) ─────────βšͺ───── 𝟸:𝟷𝟾 / 𝟹:πŸ»πŸΌβ € γ…€ ◄◄⠀▐▐⠀►► ───○ πŸ”Š

0개의 λŒ“κΈ€