๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ฌธ์ œํ’€๊ธฐ

[javascript] ์Šคํฌ๋กค ์‹œ ๋ฑƒ์ง€ ์•ˆ๋ณด์ด๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•

์Šคํƒ€๋ฒ…์Šค ํ™ˆํŽ˜์ด์ง€๋ฅผ ๋ณด๋ฉด ์šฐ์ธก์— ๋ฑƒ์ง€๊ฐ€ ๋ณด์ธ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๋ฒณ์ง€๋Š” ์ผ์ •๋ถ€๋ถ„ ์•„๋ž˜๋กœ ์Šคํฌ๋กค ํ•˜๊ฒŒ๋˜๋ฉด ์ ์ฐจ ํˆฌ๋ช…ํ•ด์ง€๋ฉด์„œ ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค. 

๋ฑƒ์ง€ ์žˆ์„ ๋•Œ
์Šคํฌ๋กค ์‹œ ๋ฑƒ์ง€ ์‚ฌ๋ผ์กŒ์„ ๋•Œ

 

์œ„ ์ด๋ฏธ์ง€์™€ ๊ฐ™์€ ์ด๋ฒคํŠธ๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ lodash ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ gsap ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•˜๋ฉด ํŽธ๋ฆฌํ•˜๋‹ค. ๋จผ์ € html์˜ head ์˜์—ญ์— ๊ฐ script ์ฝ”๋“œ๋ฅผ ์ ์šฉ์‹œํ‚จ๋‹ค. ์ด๋•Œ ๋ฐ˜๋“œ์‹œ main ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์œ„์— ์ ์šฉ์‹œ์ผœ์•ผ ํ•œ๋‹ค.

<head>
<!--lodash ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ -->
<script
src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"
integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ=="
crossorigin="anonymous"
referrerpolicy="no-referrer"
></script>

<!--gsap ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ -->
<script
src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.6.1/gsap.min.js"
integrity="sha512-cdV6j5t5o24hkSciVrb8Ki6FveC2SgwGfLE31+ZQRHAeSRxYhAQskLkq3dLm8ZcWe1N3vBOEYmmbhzf7NTtFFQ=="
crossorigin="anonymous"
referrerpolicy="no-referrer"
></script>

<script defer src="./js/main.js"></script>
</head>

 

๊ทธ ํ›„ main ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์— ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. (์ฐธ๊ณ ๋กœ badgeEl ์š”์†Œ๋Š” ์ด๋ฏธ์ง€๊ฐ€ ๋‹ด๊ธด div ์š”์†Œ์ด๋‹ค.)

const badgeEl = document.querySelector('.badges');

window.addEventListener('scroll', _.throttle(function () {
  if (window.scrollY > 500){
    // ๋ฐฐ์ง€ ์ˆจ๊ธฐ๊ธฐ
    gsap.to(badgeEl, 0.6, {
      opacity: 0,
      display: 'none'
    });
  }else {
    //๋ฐฐ์ง€ ์žฌ๋…ธ์ถœ
    gsap.to(badgeEl, 0.6, {
      opacity: 1,
      display: 'block'
    });
  }
}, 300));

 

window์— ์Šคํฌ๋กค ์ด๋ฒคํŠธ๊ฐ€ ์ผ์–ด๋‚˜๋ฉด ํ•ด๋‹น ์ฝœ๋ฐฑํ•จ์ˆ˜๊ฐ€ ๋ฐ˜๋ณต ์ž‘๋™๋˜์–ด ํ”„๋กœ๊ทธ๋žจ์— ๋„ˆ๋ฌด ๋ฌด๋ฆฌ๊ฐ€ ๊ฐ€๊ธฐ ๋•Œ๋ฌธ์—, lodash ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ _.throttle(ํ•จ์ˆ˜, ์‹œ๊ฐ„(ms)) ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ๋ถˆํ•„์š”ํ•œ ์‹คํ–‰์„ ์ค„์—ฌ์ค€๋‹ค. ์ด๋Š” ์ด๋ฒคํŠธ์˜ ์ฝœ๋ฐฑํ•จ์ˆ˜ ์‹ค์ œ ๊ณ„์† ๋ฐ˜๋ณต ์‹คํ–‰๋˜๋Š” ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ ์ž„์˜๋กœ ์„ค์ •ํ•œ ์ผ์ •์‹œ๊ฐ„ ๊ฐ„๊ฒฉ(ms)๋งˆ๋‹ค ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  gsap ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ gsap.to(์š”์†Œ, ์ง€์†์‹œ๊ฐ„(s), ์˜ต์…˜) ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์ข€ ๋” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๊ตฌํ˜„์‹œํ‚จ๋‹ค. ํ•ด๋‹น ๋ฉ”์†Œ๋“œ์˜ ์ธ์ž๋กœ๋Š” ๊ตฌํ˜„๋  ํ•ด๋‹น ์š”์†Œ์™€ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์ž‘๋™๋  ์ผ์ •์‹œ๊ฐ„(s), ๊ทธ๋ฆฌ๊ณ  ์˜ต์…˜์„ ๊ฐ์ฒด๋กœ ๋„ฃ๋Š”๋‹ค.