[miniProjects] 30_Auto Text Effect

보리·2023λ…„ 6μ›” 19일
0

miniProjects

λͺ©λ‘ 보기
30/47

30_Auto Text Effect

πŸ’»μ£Όμ œ : μžλ™ 타이핑 효과 (μ†λ„μ‘°μ ˆλ„ κ°€λŠ₯)

const textEl = document.getElementById('text')
const speedEl = document.getElementById('speed')
const text = "We Love Programming"
let idx = 1
let speed = 300 / speedEl.value

writeText()

function writeText() {
  textEl.innerText = text.slice(0, idx)

  idx++

  if(idx > text.length) {
    idx = 1
  }
  setTimeout(writeText, speed)
}

speedEl.addEventListener('input', (e) => speed = 300 / e.target.value)
  • let speed = 300 / speedEl.value
    μ• λ‹ˆλ©”μ΄μ…˜ 속도λ₯Ό λ‚˜νƒ€λ‚΄λŠ” λ³€μˆ˜ speedλ₯Ό μ„ μ–Έν•˜κ³ , speedEl μš”μ†Œμ˜ 값에 따라 μ΄ˆκΈ°ν™”ν•œλ‹€. speedEl은 input μš”μ†Œλ‘œ μ‚¬μš©μžκ°€ 속도λ₯Ό 선택할 수 μžˆλŠ” μš”μ†Œλ‹€.
  • writeText()
    ν…μŠ€νŠΈλ₯Ό ν•œ κΈ€μžμ”© 좜λ ₯ν•˜λŠ” μ• λ‹ˆλ©”μ΄μ…˜μ„ κ΅¬ν˜„ν•˜λŠ” ν•¨μˆ˜
  • textEl.innerText = text.slice(0, idx)
    textEl μš”μ†Œμ˜ innerText 속성을 μ‚¬μš©ν•˜μ—¬ ν˜„μž¬κΉŒμ§€ 좜λ ₯된 ν…μŠ€νŠΈλ₯Ό μ„€μ •ν•œλ‹€.
    text.slice(0, idx)λŠ” text λ³€μˆ˜μ—μ„œ 0λΆ€ν„° idx μ§μ „κΉŒμ§€μ˜ λΆ€λΆ„ λ¬Έμžμ—΄μ„ κ°€μ Έμ˜¨λ‹€.
    idx++: idx 값을 1 μ¦κ°€μ‹œν‚¨λ‹€.
  • if(idx > text.length) { idx = 1 }
    idx 값이 text의 길이보닀 크면 idxλ₯Ό 1둜 μž¬μ„€μ •ν•œλ‹€. -> ν…μŠ€νŠΈκ°€ ν•œ 바퀴λ₯Ό λŒλ©΄μ„œ 반볡되게 λœλ‹€.
  • setTimeout(writeText, speed)
    writeText ν•¨μˆ˜λ₯Ό speed λ°€λ¦¬μ΄ˆ 후에 ν˜ΈμΆœν•œλ‹€. μ΄λ ‡κ²Œ ν•¨μœΌλ‘œμ¨ ν…μŠ€νŠΈκ°€ ν•œ κΈ€μžμ”© 좜λ ₯λ˜λŠ” 속도λ₯Ό μ œμ–΄ν•  수 μžˆλ‹€.
  • speedEl.addEventListener('input', (e) => speed = 300 / e.target.value)
    speedEl μš”μ†Œμ— 'input' 이벀트 λ¦¬μŠ€λ„ˆλ₯Ό μΆ”κ°€ν•œλ‹€. μ‚¬μš©μžκ°€ 속도λ₯Ό 선택할 λ•Œλ§ˆλ‹€ ν˜ΈμΆœλ˜λŠ” 콜백 ν•¨μˆ˜μ—μ„œ speed 값을 κ°±μ‹ ν•œλ‹€.
    300 / e.target.valueλŠ” μ‚¬μš©μžκ°€ μ„ νƒν•œ 속도에 따라 μ• λ‹ˆλ©”μ΄μ…˜ 속도λ₯Ό μ‘°μ •ν•˜κΈ° μœ„ν•œ 계산식
profile
μ •μ‹ μ°¨λ € 이 κ°λ°•ν•œ μ„Έμƒμ†μ—μ„œ

0개의 λŒ“κΈ€