πŸ“‘ν”„λ‘ νŠΈμ—”λ“œ 개발자 λ©΄μ ‘μ€€λΉ„(1)

μ‹ μ€μˆ˜Β·2023λ…„ 7μ›” 3일
0

HTML, CSS

λͺ©λ‘ 보기
6/6

ꡉμž₯히 μ˜€λžœλ§Œμ— λΈ”λ‘œκ·Έ ν¬μŠ€νŒ…μ„ ν•˜κ²Œ λ˜μ—ˆλ‹€. 거의 3μ£ΌλΌλŠ” μ‹œκ°„λ™μ•ˆ ν”„λ‘œμ νŠΈμ— λͺ°λ‘ν–ˆκΈ° λ•Œλ¬Έμ—, λΈ”λ‘œκ·Έλ₯Ό 쓰지 λͺ»ν–ˆλ‹€. ν”„λ‘œμ νŠΈ κΈ°κ°„λ™μ•ˆ κ²ͺ은 λ¬Έμ œλ‚˜ ν•΄κ²°λ°©μ•ˆμ€ μ°¨μ°¨ λΈ”λ‘œκ·Έμ— ν¬μŠ€νŒ… ν•  μ˜ˆμ •μ΄λ‹€. μ˜€λŠ˜μ€ 멋사 μ‹œκ°„μ— λ©΄μ ‘ μ€€λΉ„ κ°•μ˜ 듀은 것을 정리 ν•΄λ³΄μ•˜λ‹€. 멋사 ν”„λ‘ νŠΈμ—”λ“œ κΈ°κ°„λ™μ•ˆ λ§Žμ€ 것을 λ°°μ› μ§€λ§Œ 그만큼 많이 κΉŒλ¨Ήμ€ 것 κ°™λ‹€κ³  λŠκΌˆλ‹€. 볡슡의 μ€‘μš”μ„±μ„ μ•Œκ²Œ λ˜μ—ˆκ³ , μ§€κΈˆκΉŒμ§€ λ°°μ› λ˜ 것을 λ‹€μ‹œ μƒκΈ°μ‹œν‚¬ 수 μžˆμ—ˆλ˜ μ•„μ£Ό μ†Œμ€‘ν•œ μ‹œκ°„μ΄μ—ˆλ˜ 것 κ°™λ‹€.

Q1. section μš”μ†Œμ™€ article μš”μ†Œμ˜ μ‚¬μš© μš©λ„μ— λŒ€ν•΄ μ„€λͺ…ν•΄ μ£Όμ„Έμš”.

  • sectionκ³Ό article: htmlμš”μ†Œλ₯Ό κ΅¬νšμ§“λŠ” μš”μ†Œ(sectioning μš”μ†Œ)
  • section: 제λͺ©μ„ 가지고 μžˆλŠ” λΉ„μŠ·ν•œ 주제의 μ»¨ν…μΈ μ˜ κ·Έλ£Ή
  • article: λ¬Έμ„œ λ‚΄μ˜ ν•˜λ‚˜μ˜ μ™„μ „ν•œ 독립적인 컨텐츠λ₯Ό λͺ…μ‹œν•  λ•Œ μ‚¬μš©

Q2. CSS Sprite기법에 λŒ€ν•œ μ •μ˜μ™€ μž₯단점에 λŒ€ν•΄ μ„€λͺ…ν•΄μ£Όμ„Έμš”.

  • CSS Sprite 기법은 ν•˜λ‚˜μ˜ 이미지 νŒŒμΌμ— μ—¬λŸ¬κ°œμ˜ 이미지λ₯Ό λ„£μ–΄μ„œ μ’Œν‘œμ™€ λ²”μœ„λ₯Ό 톡해 νŠΉμ • 이미지λ₯Ό λΆˆλŸ¬μ˜€λŠ” 기법.
  • ν•˜λ‚˜μ˜ 이미지 파일만 뢈러였면 되기 λ•Œλ¬Έμ— 이미지λ₯Ό λΆˆλŸ¬μ˜€λŠ”λ°μ— μžˆμ–΄μ„œ μ„±λŠ₯ μ΅œμ ν™”μ˜ μž₯점이 μžˆλ‹€.
  • 단점은 이미지λ₯Ό κ³„μ†ν•΄μ„œ μΆ”κ°€ν•΄μ„œ 이미지 파일이 λ„ˆλ¬΄ 컀질 κ²½μš°μ— μ—¬λŸ¬νŒμ˜ 이미지λ₯Ό λ”°λ‘œ λ”°λ‘œ λ‘œλ“œν•˜λŠ” 게 였히렀 효율적일 수 μžˆλ‹€.

Q3. λ‹€μŒ 이미지 포맷에 λŒ€ν•΄ 각 νŠΉμ§•μ— λŒ€ν•΄ μ„€λͺ… ν•΄ μ£Όμ„Έμš”. (JPG, GIF, PNG, SVG)

  • JPG/JPEG : 맀우 ν™”μ†Œκ°€ λ†’κ³  μ„ λͺ…. μš©λŸ‰λ„ μ μ§€λ§Œ 투λͺ…μ²˜λ¦¬κ°€ λΆˆκ°€λŠ₯
  • GIF : 256μƒ‰μ˜ 컬러만 ν‘œν˜„ κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— μ„ λͺ…ν•˜μ§„ μ•Šμ§€λ§Œ μš©λŸ‰μ΄ 적게 λ“ λ‹€. 투λͺ…은 ν‘œν˜„ κ°€λŠ₯ν•˜μ§€λ§Œ κ·Έ 정도λ₯Ό μ‘°μ ˆν•˜λŠ”κ±΄ λΆˆκ°€λŠ₯ν•˜λ©°, λ•Œλ¬Έμ— 그림자 ν‘œν˜„λ„ λΆˆκ°€λŠ₯. μ• λ‹ˆλ©”μ΄μ…˜ μ²˜λ¦¬κ°€ κ°€λŠ₯.
  • PNG : μ›¬λ§Œν•œ μ»¬λŸ¬λŠ” λͺ¨λ‘ ν‘œν˜„ κ°€λŠ₯ν•˜μ—¬ 투λͺ… μ˜μ—­μ„ 처리 κ°€λŠ₯ν•˜μ§€λ§Œ μš©λŸ‰μ΄ 크닀.
  • SVG : 2차원 λ°±ν„° κ·Έλž˜ν”½μ„ κ·Έλ¦΄λ•Œ μ‚¬μš©ν•˜λŠ” λ§ˆν¬μ—… μ–Έμ–΄. SVG μ΄λ―Έμ§€λŠ” 이미지 ν’ˆμ§ˆ μ €ν•˜ 없이 λͺ¨λ“  크기둜 λžœλ”λ§ κ°€λŠ₯ν•˜μ§€λ§Œ, λ³΅μž‘ν•œ 이미지λ₯Ό 그리게 되면 μš©λŸ‰μ΄ λ„ˆλ¬΄ μ»€μ§€κ²Œλ˜λŠ” 단점도 있음.
  • webp/avif: μ΅œμ‹  λΈŒλΌμš°μ €μ—μ„œ μ§€μ›ν•˜λŠ” μ°¨μ„ΈλŒ€ 이미지 포맷

Q4. Pixel Ratio에 λŒ€ν•΄μ„œ μ„€λͺ…을 ν•΄μ£Όμ„Έμš”.

  • Pixel Ratioλž€ λ””λ°”μ΄μŠ€ μž₯치의 물리적 ν”½μ…€κ³Ό CSS둜 κ·Έλ¦¬λŠ” 논리적 ν”½μ…€μ˜ λΉ„μœ¨μ„ 의미. 즉 ν•˜λ‚˜μ˜ css 픽셀을 κ·Έλ¦΄λ•Œ μ‚¬μš©ν•΄μ•Όν•˜λŠ” λ””λ°”μ΄μŠ€ μž₯치의 ν”½μ…€ 갯수라고 ν•  수 있음.
  • λ ˆν‹°λ‚˜ λ””μŠ€ν”Œλ ˆμ΄λž€ pixel ratio 값이 2이상 일 λ•Œ 즉, css둜 κ·Έλ¦¬λŠ” 1px μ•ˆμ— λ””λ°”μ΄μŠ€κ°€ 가지고 μžˆλŠ” 물리적인 픽셀이 2개 이상이 λ“€μ–΄κ°ˆ λ•Œλ₯Ό μ˜λ―Έν•œλ‹€.
  • λΈŒλΌμš°μ €λŠ” cssμ—μ„œ μ •μ˜ν•œ ν”½μ…€λ§ŒνΌ 이미지λ₯Ό λ Œλ”λ§ ν•΄μ•Όν•˜κΈ° λ•Œλ¬Έμ— μ›λž˜λŠ” 물리픽셀에 맞게 λ Œλ”λ§λœ 이미지가 λ…Όλ¦¬ν”½μ…€λ§ŒνΌ μ»€μ Έλ²„λ¦¬κ²Œ λœλ‹€. κ°€λ‘œ 2 μ„Έλ‘œ 4λ₯Ό κ·Έλ¦°λ‹€κ³  ν•΄λ³΄μž. λ ˆν‹°λ‚˜(고해상도 ν™”λ©΄)의 ν™”μ†Œκ°€ 더 λ§Žμ€λ°λ„ λΆˆκ΅¬ν•˜κ³  CSSμ—μ„œ λͺ…λ Ήν•œλŒ€λ‘œ κ°€λ‘œ2 μ„Έλ‘œ4λ₯Ό 그렀버린닀. κ·Έλž˜μ„œ 이게 μ–΅μ§€λ‘œ 크기에 맞좰 λŠ˜μ–΄λ‚˜μ„œ 물먹은 것 처럼 보이게 λ˜λŠ”κ²ƒ! (좜처: https://velog.io/@ewaterbin/CSS-%EC%8B%A4%EB%AC%B4%ED%85%8C%ED%81%AC%EB%8B%89)

Q5. CSS μ„ νƒμž μš°μ„ μˆœμœ„μ— λŒ€ν•΄ μ„€λͺ…ν•΄ λ³΄μ„Έμš”.

  • !important β€”> Inline μŠ€νƒ€μΌ β€”> id β€”> class, κ°€μƒν΄λž˜μŠ€(nth-child, hover), 속성 μ„ νƒμž β€”> tag, κ°€μƒμš”μ†Œ μ„ νƒμž(::after) β€”> μ„ μ–Έ μˆœμ„œ

Q6. Margin Collapsing ν˜„μƒμ— λŒ€ν•΄ μ„€λͺ…ν•΄ λ³΄μ„Έμš”.

  • Margin Collapsingν˜„μƒμ€ 두 개 μ΄μƒμ˜ λΈ”λ‘μš”μ†Œμ— μƒν•˜ λ§ˆμ§„μ΄ κ²ΉμΉ  λ•Œ, λ˜λŠ” λΆ€λͺ¨μ™€ μžμ‹ 사이에 λ§ˆμ§„μ΄ μžˆλŠ” 경우 두 λ§ˆμ§„ 쀑 큰 값이 μ μš©λ˜λŠ” 경우.
  • 해결방법은 overflow: hiddenμ£ΌκΈ°, overflow hidden을 μ£Όκ±°λ‚˜ display속성을 μ‚¬μš©ν•˜λ©΄ block format contextλΌλŠ” μ˜μ—­μ„ μƒμ„±ν•˜κ²Œ λœλ‹€.

Q7. button νƒœκ·Έμ™€ input type="button"의 차이에 λŒ€ν•΄ μ„€λͺ…ν•΄ λ³΄μ„Έμš”.

  • button νƒœκ·ΈλŠ” 폼 νƒœκ·Έ μ•ˆμ—μ„œ μ‚¬μš©ν•˜λ©΄ κΈ°λ³Έ 속성인 submit이 μ μš©λ˜μ–΄ 클릭 μ‹œ 폼이 제좜 λœλ‹€.
  • λ²„νŠΌ νƒœκ·ΈλŠ” λ‹«λŠ” νƒœκ·Έκ°€ μžˆμ–΄ ν•˜μœ„ νƒœκ·Έλ₯Ό 넣을 수 있고 input νƒœκ·ΈλŠ” 그렇지 μ•Šλ‹€.

Q8. λΈŒλΌμš°μ €κ°€ μ›Ή νŽ˜μ΄μ§€λ₯Ό λ Œλ”λ§ ν•˜λŠ” 과정을 μ„€λͺ…ν•΄ λ³΄μ„Έμš”.

  1. νŒŒμ‹±: html νŒŒμΌμ„ DOM트리둜 λ°”κΎΌλ‹€.
    • μ˜€νƒ€ ν˜Ήμ€ 잘λͺ»λœ 문법을 μ‚¬μš©ν–ˆμ„ 경우 μ˜ˆμ™Έμ²˜λ¦¬λ₯Ό ν•œλ‹€.
    • <link>, <img>와 같은 νƒœκ·Έλ₯Ό λ§Œλ‚˜λ©΄ DOM νŒŒμ‹±μ„ μ€‘λ‹¨ν•˜κ³  λ¦¬μ†ŒμŠ€λ₯Ό λ‹€μš΄λ‘œλ“œ ν•œλ‹€.
    • <script> νƒœκ·Έλ₯Ό λ§Œλ‚˜λ©΄ DOM νŒŒμ‹±μ„ μ€‘λ‹¨ν•˜κ³  μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό ν•΄μ„ν•œλ‹€.
      -> νŒŒμ‹±μ„ μ€‘λ‹¨μ‹œν‚€λŠ” νƒœκ·Έ: render blocking resources
  2. μŠ€νƒ€μΌ 계산: CSS μ—­μ‹œ νŒŒμ‹±ν•˜μ—¬ CSSOM 트리둜 λ³€ν™˜μ‹œν‚¨λ‹€.
  3. λ ˆμ΄μ•„μ›ƒ: μ•„κΉŒ μƒμ„±ν•œ DOMνŠΈλ¦¬μ™€ CSSOM 트리λ₯Ό ν•©μ³μ„œ λ ˆμ΄μ•„μ›ƒ 트리(λ Œλ”νŠΈλ¦¬)λ₯Ό μƒμ„±ν•œλ‹€.
  4. 페인트: λ ˆμ΄μ•„μ›ƒ νŠΈλ¦¬κ°€ μƒμ„±λ˜λ©΄ 이 트리λ₯Ό 따라 페인트 기둝이 μƒμ„±λœλ‹€.
  5. μ»΄ν¬μ§€νŒ…: 각각의 λ ˆμ΄μ–΄λ₯Ό μŠ€ν¬λ¦°μ— ν”½μ…€λ‘œ ν‘œν˜„ν•˜κ³  λ‚˜λˆ„μ–΄ 있던 λ ˆμ΄μ–΄λ“€μ„ ν•©μ„±ν•΄ νŽ˜μ΄μ§€λ₯Ό κ·Έλ¦°λ‹€.

Q9. λΈŒλΌμš°μ € λ¦¬ν”Œλ‘œμš° ν˜„μƒμ— λŒ€ν•΄ μ„€λͺ…ν•΄ λ³΄μ„Έμš”.

  • λΈŒλΌμš°μ € λžœλ”λ§μ˜ 각 λ‹¨κ³„λŠ” λ°˜λ“œμ‹œ μ „ λ‹¨κ³„μ˜ 데이터가 ν•„μš”ν•˜λ©°, html의 λ ˆμ΄μ•„μ›ƒμ΄ 변경될 경우 λ ˆμ΄μ•„μ›ƒ λ‹¨κ³„μ—μ„œ λžœλ” νŠΈλ¦¬κ°€ μž¬μƒμ„±λ˜λ©° 이λ₯Ό λ¦¬ν”Œλ‘œμš°λΌκ³  ν•œλ‹€.
  • λ ˆμ΄μ•„μ›ƒμ— λ³€ν™”λ₯Ό μ£ΌλŠ” 거의 λͺ¨λ“  속성이 λ¦¬ν”Œλ‘œμš°λ₯Ό μœ λ°œν•œλ‹€. 이λ₯Ό ν”Όν•˜κΈ° μœ„ν•΄ GPUλ₯Ό μ΄μš©ν•˜λŠ” transform 속성을 μ΄μš©ν•˜μ—¬ λ ˆμ΄μ•„μ›ƒμ„ μ œμ–΄ν•˜λŠ”κ²Œ μ’‹λ‹€.
profile
πŸ™ŒκΏˆκΎΈλŠ” ν”„λ‘ νŠΈμ—”λ“œ 개발자 μ‹ μ€μˆ˜μž…λ‹ˆλ‹ΉπŸ™Œ

0개의 λŒ“κΈ€