λ…μ„œ

[ 독후감 ] λ°˜μ‘ν˜• λ””μžμΈ νŒ¨ν„΄κ³Ό 원리λ₯Ό 읽고...

YWTechIT 2021. 11. 9. 06:09
728x90

πŸ“ [ 독후감 ] λ°˜μ‘ν˜• λ””μžμΈ νŒ¨ν„΄κ³Ό 원리 - 이단 마콧

✏️ μ„œλ‘ 

항상 μ›Ήμ‚¬μ΄νŠΈλ₯Ό κ΅¬κ²½ν•˜λ‹€ 보면 λŒ€λΆ€λΆ„ λ°˜μ‘ν˜• νŽ˜μ΄μ§€λ‘œ 된 것을 λ³Ό 수 μžˆλ‹€.(였늘의 집) λ‚΄κ°€ ν”„λ‘œμ νŠΈλ₯Ό λ§Œλ“€ λ•Œλ„ 항상 λ°˜μ‘ν˜• νŽ˜μ΄μ§€λ‘œ λ§Œλ“€λ €κ³  λ…Έλ ₯ν•œλ‹€. ν•˜μ§€λ§Œ, λ°˜μ‘ν˜• νŽ˜μ΄μ§€μ˜ μš©μ–΄κ°€ μ •ν™•νžˆ μ–΄λ–€ 것이고 μ–Έμ œ λ°˜μ‘ν˜• νŽ˜μ΄μ§€λ₯Ό λ§Œλ“€μ–΄μ•Ό ν•˜λŠ”κ°€? μ–΄λ–»κ²Œ ν•˜λ©΄ μœ μ €κ°€ 보기 νŽΈν•œ λ°˜μ‘ν˜• νŽ˜μ΄μ§€λ₯Ό λ§Œλ“€ 수 μžˆμ„κΉŒ?λΌλŠ” 생각이 λ“€λ©΄μ„œ κ΄€λ ¨ μ„œμ μ„ 찾을 λ•Œ 이 책을 보게 λ˜μ—ˆλ‹€. 책은 μ•ŒλΌλ”˜μ—μ„œ μ£Όλ¬Έν–ˆκ³  μ•½ 200νŽ˜μ΄μ§€λ‘œ κ΅¬μ„±λ˜μ–΄μžˆλ‹€. 읽은 기간은 21.10.19. ~ 21.11.4.이닀.

✏️ 본둠

파라벨의 트렌트 월턴은 λ°˜μ‘ν˜• λ””μžμΈμ˜ μ„Έκ³„λ‘œ μ§„μž…ν•˜κ²Œ 된 과정을 μ„€λͺ…ν•œλ‹€. ν¬ν† μƒ΅μœΌλ‘œ μž‘μ—…ν•˜λ˜ 기쑴의 방식을 버리고 μƒˆλ‘œμš΄ 방식을 μ±„νƒν–ˆλŠ”λ°, κ°€λ³€ κ·Έλ¦¬λ“œ, κ°€λ³€ 이미지, λ―Έλ””μ–΄ 쿼리λ₯Ό ν™œμš©ν•œ 방식이닀. κΈ°μ‘΄μ—λŠ” νŽ˜μ΄μ§€λ₯Ό λ§Œλ“€μ—ˆλ‹€λ©΄, νŽ˜μ΄μ§€ λŒ€μ‹  μ–΄λ–€ ν™”λ©΄ ν¬κΈ°μ—μ„œλ“  λ©”μ‹œμ§€λ₯Ό κ°€μž₯ 잘 μ „λ‹¬ν•˜λ„λ‘ λ‹€μ‹œ λ°°μΉ˜ν•  수 μžˆλŠ” μ½˜ν…μΈ  λ„€νŠΈμ›Œν¬λ₯Ό κ΅¬μΆ•ν–ˆλ‹€. 즉, λ°˜μ‘ν˜• λ””μžμΈμ„ μ–΄λ–€ ν™”λ©΄ ν¬κΈ°μ—μ„œλ“  λ©”μ‹œμ§€λ₯Ό κ°€μž₯ 잘 μ „λ‹¬ν•˜κ²Œλ” μž¬λ°°μΉ˜κ°€ κ°€λŠ₯ν•œ μž‘μ€ λ””μžμΈ λ΄‰νˆ¬λΌκ³  ν–ˆλ‹€. 책은 λ°˜μ‘ν˜• νŽ˜μ΄μ§€λ₯Ό μ μš©ν•œ 3-40개의 μ™Έκ΅­ μ‚¬μ΄νŠΈλ₯Ό μ˜ˆμ‹œλ‘œ λ“€λ©΄μ„œ μ‚¬μ΄νŠΈλ“€μ˜ μž₯점과 단점에 λŒ€ν•΄ μ„€λͺ…ν–ˆλ‹€.

 

λ°˜μ‘ν˜•νŽ˜μ΄μ§€λ₯Ό μ μš©ν•  λ•Œ μž‘μ—…μ˜ λ²”μœ„μ™€ λ³΅μž‘λ„κ°€ μ»€μ§€λ©΄μ„œ, μž‘μ—…μ„ λͺ¨λ“ˆν™” ν•΄μ•Ό ν•œλ‹€λŠ” ν•„μš”μ„±μ΄ λŒ€λ‘λ˜μ—ˆλŠ”λ°, λ””μžμΈ λ‚΄μ—μ„œ μ»΄ν¬λ„ŒνŠΈμ— μ΄ˆμ μ„ λ§žμΆ”κ²Œ λ˜μ—ˆλ‹€. κ·Έλž˜μ„œ νŒ¨ν„΄ 라이브러리 ν˜Ήμ€ μŠ€νƒ€μΌ κ°€μ΄λ“œλ₯Ό λ§Œλ“œλŠ” 것에도 μƒˆλ‘­κ²Œ 관심이 μ§‘μ€‘λ˜μ—ˆλŠ”λ° μš°λ¦¬κ°€ ν”νžˆ μ•Œκ³  μžˆλŠ” μŠ€νƒ€λ²…μŠ€λŠ” λ°˜μ‘ν˜• μ‚¬μ΄νŠΈμ— μ‚¬μš©ν•œ νŒ¨ν„΄ 라이브러리λ₯Ό κ³΅κ°œν•œ 졜초의 기업이라고 μ„€λͺ…ν–ˆλ‹€. μ»€μŠ€ν…€ λ²…μŠ€ ν”„λ‘œμ νŠΈλ₯Ό λ§Œλ“€ λ•Œ μŠ€νƒ€λ²…μŠ€ νŒ¨ν„΄ 라이브러리λ₯Ό 적극 μ‚¬μš©ν–ˆλŠ”λ° νŒ¨ν„΄ 라이브러리λ₯Ό κ³΅κ°œν•œ 졜초의 기업이라고 ν•˜λ‹ˆ μ‹ κΈ°ν–ˆλ‹€.

 

λ‹€μŒμœΌλ‘œ λ°˜μ‘ν˜• νŽ˜μ΄μ§€λ₯Ό ꡬ성할 λ•Œ λΈŒλΌμš°μ €κ°€ μ΅œμ‹  λΈŒλΌμš°μ €μΈμ§€ ν…ŒμŠ€νŠΈν•˜λŠ” 방법인데 λ‹€μŒμ˜ μ½”λ“œλ₯Ό μ‚¬μš©ν–ˆλ‹€. 이 μ½”λ“œλ₯Ό μ‚¬μš©ν–ˆμ„ λ•Œμ˜ μž₯점은 μ‚¬μ΄νŠΈκ°€ λ‘œλ“œλ  λ•Œ μžλ°”μŠ€ν¬λ¦½νŠΈ ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό 톡해 κΈ°λŠ₯ μˆ˜ν–‰μ΄ μ–΄λ €μš΄ λΈŒλΌμš°μ €λ₯Ό κ±ΈλŸ¬λ‚΄κ³ , 그런 λΈŒλΌμš°μ €μ—λŠ” JS둜 κ΅¬λ™λ˜λŠ” UIλ₯Ό λŒ€λΆ€λΆ„ μ œμ™Έν•˜μ—¬ κΉ¨λ—ν•˜κ³  κ°„κ²°ν•˜λ©° 핡심적인 μ‚¬μš©μž κ²½ν—˜λ§Œ λ‚¨κ²¨λ‘λŠ” 것에 μžˆλ‹€.

// querySelector, addEventListener, getComputedStyle DOM μ†μ„±μ˜ 지원여뢀λ₯Ό ν™•μΈν•˜λŠ” 쑰건문
if ( !( "querySelector" in document && "addEventListener" in window && "getComputedStyle" in window)){
  return;
}

// DOM 속성을 λͺ¨λ‘ μ§€μ›ν•˜λ©΄ HTMLμš”μ†Œμ— enhanced 클래슀λ₯Ό μ μš©ν•œλ‹€.
window.document.documentElement.className += " enhanced";

 

728x90

 

λ°˜μ‘ν˜• νŽ˜μ΄μ§€λ₯Ό ꡬ성할 λ•Œ κ°€λ³€ 이미지와 κ°€λ³€ λ™μ˜μƒμ„ μ„€μ •ν•˜λŠ” 방법에 λŒ€ν•΄μ„œλ„ μ„€λͺ…ν–ˆλ‹€. λ¨Όμ €, λ™μ˜μƒμ€ 이미지와 달리 κ³ μœ ν•œ 크기λ₯Ό κ°–κ³  μžˆμ§€ μ•ŠμœΌλ―€λ‘œ HTMLμ—μ„œ 크기λ₯Ό λ°˜λ“œμ‹œ μ§€μ •ν•΄μ€˜μ•Ό ν•œλ‹€. μ΄λ•Œ, μ’…νš‘λΉ„(aspect radio)λ₯Ό κ³ λ €ν•˜μ—¬ λ„£μ–΄μ•Ό ν•˜λŠ”λ° 4:3 λΉ„μœ¨μ€ padding-bottom: 75%λ₯Ό λ„£κ³ , 16:9 λΉ„μœ¨μ€ padding-bottom: 56.2757202%λ₯Ό λ„£μ–΄μ£Όλ©΄ λœλ‹€. padding-top ν˜Ήμ€ padding-bottom에 νΌμ„ΌνŠΈ 값을 μ„€μ •ν•˜λ©΄ κ·Έ 값은 그것을 λ‘˜λŸ¬μ‹Ό μ»¨ν…Œμ΄λ‹ λΈ”λ‘μ˜ 높이에 λŒ€ν•œ λΉ„μœ¨μ΄ μ•„λ‹ˆλΌ λ„ˆλΉ„μ— λŒ€ν•œ λΉ„μœ¨μ΄ λœλ‹€. κ·Έ κ²°κ³Ό 수직 νŒ¨λ”©μ€ 항상 그것을 λ‘˜λŸ¬μ‹Έκ³  μžˆλŠ” λ°•μŠ€ λ„ˆλΉ„μ˜ 75%, 56.2757202%κ°€ λœλ‹€.

<!DOCTYPE html>
<head>
  <style>
    .intro{
      position: relative;
      padding-top: 25px;  /* IE5 IE6의 깨진 μƒμž λͺ¨λΈμ„ ν”Όν•˜κΈ° μœ„ν•œ 곡간 */
            padding-bottom: 75%;  /* 4:3 */
      padding-bottom: 56.2757202%;  /* 16:9 */
      height: 0;
    }

    .intro video {
      position: absolute;
      left: 0;
      top: 0;
      height: 100%;
      width: 100%;
    }
  </style>
</head>
<body>
  <div class="intro">
    <video controls>
      <source src="/media/cc0-videos/flower.mp4"
              type="video/mp4">
      Sorry, your browser doesn't support embedded videos.
  </video>
  </div>
</body>
</html>

κ°€λ³€ν˜• 이미지λ₯Ό λ§Œλ“œλŠ”λ° μœ μš©ν•œ μ—¬λŸ¬ CSS 속성 쀑 background-size 속성을 μ΄μš©ν–ˆλ‹€. λ§Œμ•½, μ΄λ―Έμ§€μ˜ λ„ˆλΉ„ ν˜Ήμ€ 높이가 이미지λ₯Ό λ‘˜λŸ¬μ‹Ό μ»¨ν…Œμ΄λ‹ 블둝보닀 더 크닀면 μ»¨ν…Œμ΄λ‹ 블둝 λ°”κΉ₯의 λ‚˜λ¨Έμ§€ 픽셀듀은 보이지 μ•Šμ„ 것이닀. ν•˜μ§€λ§Œ background-size 속성을 μ‚¬μš©ν•˜λ©΄ 이와 같은 ν˜„μƒμ„ μ œμ–΄ν•  수 μžˆλ‹€. μ΄λ•Œ 길이 κ°’ 쀑 ν•˜λ‚˜λ₯Ό auto둜 μ„€μ •ν•˜λ©΄ νŠΉμ • λ„ˆλΉ„ λ˜λŠ” 높이λ₯Ό κΈ°μ€€μœΌλ‘œ κ°€λ‘œμ„Έλ‘œ λΉ„μœ¨μ„ μœ μ§€ν•œ 채 이미지 크기가 μ‘°μ •λœλ‹€. λ§Œμ•½, κ°€λ‘œ μ„Έλ‘œ λΉ„μœ¨μ„ μœ μ§€ν•˜λ©΄μ„œ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ±„μš°κ³  싢을 λ•Œ background-size: coverλ₯Ό μ‚¬μš©ν•˜λ©΄ λ˜λŠ”λ°, μ»¨ν…Œμ΄λ„ˆμ˜ 크기가 μ΄λ―Έμ§€μ˜ 크기보닀 μž‘λ‹€λ©΄ μ΄λ―Έμ§€μ˜ 일뢀가 뷰에 보이지 μ•Šμ„ λ•Œκ°€ μžˆλ‹€. 이럴 λ•ŒλŠ” background-size: containλ₯Ό μ‚¬μš©ν•˜λ©΄ μ»¨ν…Œμ΄λ„ˆ μ•ˆμ˜ λ°°κ²½ 이미지 전체가 λ°˜λ“œμ‹œ 보인닀. 이외에도 λ°˜μ‘ν˜• κ΄‘κ³ , flex, grid 등에 λŒ€ν•œ μ„€λͺ…이 μ ν˜€μžˆλ‹€.

✏️ 결둠

이 책을 μ½μ—ˆλ‹€κ³  λ°˜μ‘ν˜• νŽ˜μ΄μ§€λ₯Ό 100% μ΄ν•΄ν–ˆλ‹€κ³  ν•˜κΈ°λŠ” νž˜λ“€λ‹€. λ°˜μ‘ν˜•μ„ μ‹œλ„ν•˜λŠ” 방법은 λ‹€μ–‘ν•˜κ³  μ§€κΈˆλ„ κΎΈμ€€νžˆ λ°œμ „ν•˜κ³  μžˆλŠ” λΆ„μ•ΌκΈ° λ•Œλ¬Έμ΄λ‹€. ν•˜μ§€λ§Œ, 책을 μ½μœΌλ©΄μ„œ λ°˜μ‘ν˜• νŽ˜μ΄μ§€κ°€ μ™œ μƒκΈ°κ²Œ λ˜μ—ˆκ³  λ°˜μ‘ν˜• νŽ˜μ΄μ§€μ˜ μ€‘μš”μ„±, λ°˜μ‘ν˜• νŽ˜μ΄μ§€μ˜ 기초적인 지식, μ‘μš© 예제 등을 책을 톡해 배우게 λ˜μ–΄μ„œ μ’‹μ•˜λ‹€. 제일 기얡에 λ‚¨λŠ” 지문은 λ°˜μ‘ν˜• νŽ˜μ΄μ§€λŠ” νŠΉμ • κΈ°κΈ° μ€‘μ‹¬μ˜ 뢄기점을 μ„€μ •ν•˜μ§€ μ•Šκ³  μš”μ†Œλ“€μ˜ 경계선 μœ„μΉ˜μ— 따라 λ ˆμ΄μ•„μ›ƒ μ‹œμŠ€ν…œμ„ μ‘°μ ˆν•œλ‹€λ©΄, λ”μš± κ²¬μ‹€ν•˜κ³  미래 지ν–₯적인 λ ˆμ΄μ•„μ›ƒμ„ λ§Œλ“€μ–΄λ‚Ό 수 μžˆμ„ 것이닀. μ΄λ ‡κ²Œ 되면 μš°λ¦¬κ°€ 아직 상상해본 적도 μ—†λŠ” 기기와 λΈŒλΌμš°μ €λ„ 더 잘 λŒ€λΉ„ν•  수 μžˆμ„ 것이닀.λΌλŠ” 말인데, μš”μ¦˜μ—λŠ” λͺ¨λ°”일, νƒœλΈ”λ¦Ώ, λ°μŠ€ν¬ν†± μ‚¬μ΄μ˜ 경계가 흐렀지고 있기 λ•Œλ¬Έμ— κ°€κΉŒμš΄ λ―Έλž˜μ—λŠ” μš°λ¦¬κ°€ λ§Œλ“œλŠ” μ‚¬μ΄νŠΈκ°€ 슀마트폰과 ν™”λ©΄ 크기가 거의 λΉ„μŠ·ν•œ 슀마트 μ›ŒμΉ˜μ—μ„œλ„ ν‘œμ‹œλ  μˆ˜λ„ 있기 λ•Œλ¬Έμ— κΈ°κΈ° μ’…λ₯˜μ— ν•œμ • 짓지 말고 ν™˜κ²½μ  νŠΉμ„±μ„ κ³ λ €ν•˜λŠ” 것이 건섀적인 λ°©ν–₯μ΄λΌλŠ” 의미인 것 κ°™λ‹€.

λ°˜μ‘ν˜•