[TIL] 210925

Lee SyongΒ·2021λ…„ 9μ›” 25일
0

TIL

λͺ©λ‘ 보기
38/204
post-thumbnail

πŸ“ 였늘 ν•œ 것

  1. inline μš”μ†Œ 수직 μ •λ ¬ / λΉ„μœ¨ μœ μ§€ν•˜λŠ” λ°˜μ‘ν˜• 이미지 λ§Œλ“€κΈ°

  2. HTML / CSS / JavaScript 볡슡 (TIL)

  3. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ•Œκ³ λ¦¬μ¦˜ 문제 풀이


πŸ“– ν•™μŠ΅ 자료

  1. [TIL] 210817 ~ 210902

πŸ“š 배운 것

μ˜€λŠ˜μ€ λ³΅μŠ΅μ„ ν•˜λ©΄μ„œ λ‹€μ‹œ 봀을 λ•Œ ν—·κ°ˆλ Έλ˜ λΆ€λΆ„κ³Ό λ‹Ήμ‹œμ— 질문으둜 μ μ–΄λ†¨λ˜ 뢀뢄듀을 ν•΄κ²°ν•΄μ„œ μ •λ¦¬ν•΄λ³΄λŠ” μ‹œκ°„μ„ κ°€μ‘Œλ‹€. κ·Έ μ€‘μ—μ„œ λ”°λ‘œ 빼와야겠닀 싢은 두 λΆ€λΆ„λ§Œ κ°€μ Έμ™”λ‹€.

1. inline μš”μ†Œ 수직 μ •λ ¬

  • ν…μŠ€νŠΈμ˜ μ•„λž˜, μœ„ 여백은 line-height둜 지정할 수 μžˆλ‹€.

  • vertical-align β†’ inline-block 등을 ν¬ν•¨ν•œ λͺ¨λ“  inline μš”μ†Œμ˜ 수직 정렬을 μœ„ν•΄ μ‚¬μš©λ¨

  • vertical-align: middle; β†’ ν•΄λ‹Ή μš”μ†Œμ˜ 인라인 λ°•μŠ€μ˜ 수직 쀑앙 지점을, κ·Έ λΆ€λͺ¨ μš”μ†Œμ˜ 쀑앙 지점에 μ •λ ¬


2. λΉ„μœ¨ μœ μ§€ν•˜λŠ” λ°˜μ‘ν˜• 이미지 λ§Œλ“€κΈ°

[TIL] 210901 δΈ­ λ°˜μ‘ν˜• web λΆ€λΆ„ 질문 ν•΄κ²°

μžμ‹ μš”μ†Œμ˜ % νŒ¨λ”©(% padding) 값은 λΆ€λͺ¨ μš”μ†Œμ˜ λ„ˆλΉ„ 값을 κΈ°μ€€μœΌλ‘œ 정해진닀,
CSS λ°±κ·ΈλΌμš΄λ“œ 이미지 및 μ—˜λ¦¬λ¨ΌνŠΈ λΉ„μœ¨λ‘œ μ‘°μ ˆν•˜κΈ° μ°Έκ³ 

  • μƒν•˜μ’Œμš° paddingκ³Ό margin λͺ¨λ‘ width 값에 영ν–₯을 λ°›λŠ”λ‹€. (height κ°’ X)

  • μžμ‹ μš”μ†Œμ˜ padding κ°’μœΌλ‘œ %λ₯Ό μ‚¬μš©ν•  경우, %의 κΈ°μ€€ ν¬κΈ°λŠ” λΆ€λͺ¨ μš”μ†Œμ˜ width 값이 λœλ‹€.

HTML

<div class="box1">
  <div class="box2">
    <img>
  </div>
</div>

CSS

.box1 {
  width: 400px; /* πŸ’‘ μžμ‹ μš”μ†Œμ— % padding을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄ μ μ–΄μ€Œ */
}

.box2 {
  /* πŸ’‘ % padding은 κ·Έ λΆ€λͺ¨ μš”μ†Œμ˜ width 값을 κΈ°μ€€μœΌλ‘œ 함 */
  padding-top: 100%;

  /* ν•΄λ‹Ή μš”μ†Œ μ•ˆμ˜ μš”μ†Œ 쀑 μ‚μ Έλ‚˜μ˜¨ 뢀뢄이 μ•ˆ 보이게 함 */
  overflow: hidden;

  /* img에 absolute μ μš©ν•˜κΈ° μœ„ν•΄ κ·Έ λΆ€λͺ¨ μš”μ†Œμ— 적어쀀 것 */
  position: relative;

  /* divλ₯Ό μ›ν˜•μœΌλ‘œ λ§Œλ“€μ–΄ 쀌 */
  border-radius: 50%;
}

img {
  /* πŸ’‘ μž‘μ€ imgκ°€ box2 μ•ˆμ— 꽉 차도둝 */
  height: 100%;

  /* imgκ°€ box2 μ•ˆμ— 쀑앙 μ •λ ¬μ‹œν‚΄ */
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
  • box1은 λ„ˆλΉ„μ™€ 높이 λͺ¨λ‘ 400px이고, box2μ—λŠ” λ„ˆλΉ„λ‚˜ 높이가 μ§€μ •λ˜μ–΄ μžˆμ§€ μ•Šμ€ λŒ€μ‹  padding-top 값이 100%둜 μ§€μ •λ˜μ–΄ μžˆλ‹€. μ΄λ•Œ μžμ‹ μš”μ†Œμ˜ % padding은 κ·Έ λΆ€λͺ¨ μš”μ†Œμ˜ width 값을 κΈ°μ€€μœΌλ‘œ ν•˜λ―€λ‘œ box2의 padding-top 값은 400px이 λœλ‹€.
  • 확인을 μœ„ν•΄ 개발자 λ„κ΅¬λ‘œ box1 뢀뢄을 ν΄λ¦­ν•˜λ©΄ box2 뢀뢄이 μ„ νƒλ˜λ©΄μ„œ padding-top κ°’λ§Œ 400px이라고 λ‚˜μ˜¨λ‹€. 즉, box1 뢀뢄이 box1 μ•ˆμ— μžˆλŠ” box2의 padding-top κ°’μœΌλ‘œ λͺ¨λ‘ μ±„μ›Œμ§„ 것이닀. μ΄λ•Œ box2 μ•ˆμ— imgλ₯Ό λ„£μœΌλ©΄, κ·Έ 400pxμ΄λΌλŠ” μœ— νŒ¨λ”© κ°’ 밑에 imgκ°€ 였게 되고, box2의 λ†’μ΄λŠ” 기쑴의 box2의 padding-top 값에 img의 높이λ₯Ό μΆ”κ°€ν•œ 만큼 λŠ˜μ–΄λ‚˜κ²Œ λœλ‹€.
  • κ·Έ ν›„ absoluteλ₯Ό μ΄μš©ν•΄ imgλ₯Ό box의 정쀑앙에 μ˜€λ„λ‘ μ •λ ¬μ‹œν‚¨ ν›„(λŠ˜μ–΄λ‚¬λ˜ box2의 높이가 λ‹€μ‹œ 400px이 λœλ‹€) μž‘μ€ imgκ°€ box2의 λ†’μ΄λ§ŒνΌ 꽉 μ±„μ›Œμ§€λ„λ‘ height 값을 100%둜 μ„€μ •ν•΄μ£Όλ©΄ imgκ°€ box2 μ•ˆμ— 꽉 λ“€μ–΄μ°¨κ²Œ λœλ‹€.
  • ❗ μ΄λ•Œ λΈŒλΌμš°μ € 크기가 변함에 따라 λ°˜μ‘ν˜•μœΌλ‘œ img도 λΉ„μœ¨μ„ μœ μ§€ν•˜λ©° κ·Έ 크기가 λ³€ν•˜λ„λ‘ ν•˜λ €λ©΄ box1의 width 값을 % κ°’μœΌλ‘œ μ„€μ •ν•΄μ•Ό ν•œλ‹€. κ·Έ ν›„ λ„ˆλ¬΄ κ³Όλ„ν•˜κ²Œ 이미지가 μ»€μ§€λŠ” 것을 λ°©μ§€ν•˜κ³  μ‹Άλ‹€λ©΄ max-widthλ₯Ό μ„€μ •ν•  수 μžˆλ‹€.
  • ❗ padding 값을 λ³€κ²½ν•΄ λ‹€μ–‘ν•œ λΉ„μœ¨λ‘œ λ°˜μ‘ν˜• 이미지λ₯Ό λ§Œλ“€ 수 μžˆλ‹€.
/* 1:1 λΉ„μœ¨ */
padding-top: calc(100% / 1 * 1);

/* 16:9 λΉ„μœ¨ */
padding-top: calc(100% / 16 * 9);

/* 4:3 λΉ„μœ¨ */
padding-top: calc(100% / 4 * 3);
  • μ΄λŠ” λ°°κ²½ 이미지λ₯Ό λ°˜μ‘ν˜•μœΌλ‘œ λ§Œλ“€κ³  싢을 λ•Œλ„ μ‘μš© κ°€λŠ₯ν•˜λ‹€.

3. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ•Œκ³ λ¦¬μ¦˜ 문제 풀이

1) μ™„μ£Όν•˜μ§€ λͺ»ν•œ μ„ μˆ˜

  • 처음 λ‹΅λ³€

    동λͺ…이인(λ°°μ—΄ μš”μ†Œ 쀑볡)을 κ³ λ € λͺ»ν•¨

function solution(participant, completion) {
  for (let i = 0; i < completion.length; i++) {
    for (let j = 0; j < participant.length; j++) {
      if (completion[i] === participant[j]) {
        participant.splice(j, 1);
      }
    }
  }
  var answer = participant.toString();
  return answer;
}
  • λ‹΅λ³€ μˆ˜μ •
function solution(participant, completion) {
  for (let i = 0; i < completion.length; i++) {
    var index = participant.indexOf(completion[i]);
    participant.splice(index, 1);
  }
  var answer = participant.toString();
  return answer;
}

ν‘ΈλŠ” 건 금방 ν’€μ—ˆλŠ”λ° μ €λ²ˆμ— 아직 νš¨μœ¨μ„± ν…ŒμŠ€νŠΈλŠ” κ³ λ €ν•˜μ§€ 말라고 ν•΄μ„œ μ΄λ²ˆμ—λ„ μ •ν™•λ„λ§Œ ν†΅κ³Όλœ ν›„ 끝낸 거라 νš¨μœ¨μ„±μ€ 0점이닀. μ‹€ν–‰ 결과에 μ‹œκ°„ 초과라고 λœ¨λŠ” κ±° 보면 μ‹œκ°„ κ΄€λ ¨λœ 문제인 κ±° 같은데 μ•Œκ³ λ¦¬μ¦˜ κ°•μ˜λ„ ν•œλ²ˆ 듀어봐야 ν•˜λ‚˜. μ•„λ‹ˆλ©΄ κ³„μ†ν•΄μ„œ 배운 κ±Έ ν† λŒ€λ‘œ μ •ν™•λ„λ§Œ κ³ λ €ν•΄μ„œ 풀어도 λ˜λŠ” 걸까.

또 λ‹€λ₯Έ ν•œλ‹¬ λ™μ•ˆ ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ•Œκ³ λ¦¬μ¦˜ 문제만 계속 ν‘ΈλŠ” 것도 μ‹œκ°„μ΄ μ•„κΉŒμš΄ κ±° κ°™μ•„μ„œ μ €λ²ˆμ— 듀어보렀닀 미뀘던 λ“œλ¦Όμ½”λ”© κ°•μ˜λ„ 내일뢀터 ν•¨κ»˜ λ“€μ–΄λ³ΌκΉŒ ν•œλ‹€. 이미 사전 ν•™μŠ΅μ„ 톡해 배운 λ‚΄μš©λ“€μ΄ μ»€λ¦¬ν˜λŸΌμ— 많이 ν¬ν•¨λ˜μ–΄ μžˆλŠ” κ°•μ˜ 같은데 어떨지 λͺ¨λ₯΄κ² λ‹€. 진도가 ν›…ν›… λ‚˜κ°ˆ 수 μžˆμ—ˆμœΌλ©΄ μ’‹κ² λ‹€. λ―Έλ‹ˆ ν”„λ‘œμ νŠΈλ“€λ„ ν•¨κ»˜ λ§Œλ“œλŠ” κ°•μ˜λΌ μž¬λ°Œμ„ κ±° κ°™λ‹€.


✨ 내일 ν•  것

  1. μžλ°”μŠ€ν¬λ¦½νŠΈ 볡슡

  2. μƒˆλ‘œμš΄ κ°•μ˜ μˆ˜κ°• μ‹œμž‘

  3. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ•Œκ³ λ¦¬μ¦˜ 문제 풀이

profile
λŠ₯λ™μ μœΌλ‘œ μ‚΄μž, ν–‰λ³΅ν•˜κ²ŒπŸ˜

0개의 λŒ“κΈ€