woalsrhKR
EVERYDAY
woalsrhKR
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ“š ๊ธ€ ๋ชจ์Œ์ง‘ (578)
    • ๐Ÿ”ค Language (84)
      • ๐ŸŸจ JavaScript (52)
      • ๐ŸŸฆ TypeScript (12)
      • ๐Ÿ’— SCSS (0)
      • ๐ŸŸ  HTML (12)
      • ๐Ÿ”ต CSS (8)
    • ๐ŸŒƒ ํ•˜๋ฃจ๊ธฐ๋ก (469)
    • ๐ŸŽฌ ์˜ํ™” ๊ฐ์ƒํšŒ (1)
    • ๐Ÿ’ป Web Develop (16)
      • โ˜•๏ธ STARBUCKS ๊ฐœ๋ฐœ์ผ์ง€ (14)
    • ๐ŸŽ“ University (6)
      • ์˜คํ”ˆ์†Œ์Šค ๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ (5)
      • ์ •๋ณดํ†ต์‹ ๊ฐœ๋ก  (0)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ํŒŒ๋น„์ฝ˜
  • object
  • ์•„์ด์ฝ˜
  • ํฐํŠธ
  • 79๋Œ€ํฌ
  • ์ผ์ƒ
  • ๊ฐ์ฒด
  • ํŠธ์œ„ํ„ฐ์นด๋“œ
  • ๋ฉ”๊ฐ€์ปคํ”ผ
  • ์ƒ๋Œ€๊ฒฝ๋กœ
  • ์˜คํ”ˆ๊ทธ๋ž˜ํ”ผ
  • ์ง„์‹๋‹น
  • ๋‹ค์ด์†Œ
  • ์Šคํƒ€๋ฒ…์Šค
  • ์ผ๊ธฐ
  • ์‚ฌ์ฐฝ
  • ๋‹ค์ด์†Œ์‚ฌ์ฐฝ
  • ์ ˆ๋Œ€๊ฒฝ๋กœ
  • ํด๋ก 
  • ์—ฌ์ž์นœ๊ตฌ

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
woalsrhKR

EVERYDAY

4. ์Šคํƒ€๋ฒ…์Šค ์ „์—ญ๋ฐฐ์ง€(GSAP)
๐Ÿ’ป Web Develop/โ˜•๏ธ STARBUCKS ๊ฐœ๋ฐœ์ผ์ง€

4. ์Šคํƒ€๋ฒ…์Šค ์ „์—ญ๋ฐฐ์ง€(GSAP)

2022. 2. 4. 12:20

์Šคํƒ€๋ฒ…์Šค ์ „์—ญ๋ฐฐ์ง€(GSAP) ์‹œ์ž‘์ „ ์™„์„ฑ ๋ชจ์Šต

์ „์—ญ๋ฐฐ์ง€


์Šคํƒ€๋ฒ…์Šค ์ „์—ญ๋ฐฐ์ง€(GSAP) HTML

์•„๋ž˜๋Š” ๋ฐฐ์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ HTML์ด๋‹ค.

    <div class="badges">
      <div class="badge">
        <img src="./images/badge1.jpg" alt="Badge" />
      </div>
      <div class="badge">
        <img src="./images/badge2.jpg" alt="Badge" />
      </div>
    </div>

์ด html์˜ css๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ css ์†์„ฑ์€

badges์™€ badge๋ฅผ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค.


์Šคํƒ€๋ฒ…์Šค ์ „์—ญ๋ฐฐ์ง€(GSAP) CSS

์•„๋ž˜๋ถ€ํ„ฐ๋Š” CSS๋ฅผ ์‚ดํŽด๋ณผ ๊ฒƒ์ด๋‹ค.

header .badges {
  position: absolute;
  top: 132px;
  right: 12px;
}

badges ํด๋ž˜์Šค์—์„œ๋Š” ๋ฐฐ์ง€์˜ ์œ„์น˜๋ฅผ ์žก์•„์ค„ ๊ฒƒ์ด๋‹ค.

๋ถ€๋ชจ์š”์†Œ์ธ header๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์œ„์—์„œ 132px๋งŒํผ ์˜ค๋ฅธ์ชฝ์—์„œ 12px๋งŒํผ ๊ฐ€์„œ ๋ฐฐ์ง€๋ฅผ ์œ„์น˜์‹œํ‚จ๋‹ค.

 

์ด์ œ ๋ฐฐ์ง€๋ฅผ ๊พธ๋ฉฐ๋ณผ ๊ฒƒ์ด๋‹ค.

header .badges .badge {
  border-radius: 10px;
  overflow: hidden;
  margin-bottom: 12px;
  box-shadow: 4px 4px 10px rgba(0,0,0,.15);
  cursor: pointer;
}

badges ํด๋ž˜์Šค์—์„œ๋Š” ๋ฐฐ์ง€์˜ ๋ชจ์–‘์„ ์žก์•„์ค„ ๊ฒƒ์ด๋‹ค.

๋ฐฐ์ง€์˜ ๋๋ถ€๋ถ„์€ ๋‘ฅ๊ธ€๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๊ณ 

overflow: hidden์€ ๋„˜์น˜๋Š” ๋ถ€๋ถ„์ด ์งค๋ ค์„œ ๋ณด์ด์ง€ ์•Š๊ฒŒ ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

๋ฐฐ์ง€๊ฐ€ ๋ถ™์–ด์žˆ๋Š” ๊ฒƒ์„ ๋–ผ์ฃผ๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ์™ธ๋ถ€์—ฌ๋ฐฑ์„ 12px๋‘”๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฐ•์Šค๋Š” ๊ทธ๋ฆผ์ž๋ฅผ ๋งŒ๋“ ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฐ•์Šค์— ๋งˆ์šฐ์Šค ์ปค์„œ๋ฅผ ๊ฐ€์ ธ๋‹ค๋Œ€๋ฉด ์†๊ฐ€๋ฝ ์ปค์„œ๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.


์Šคํƒ€๋ฒ…์Šค ์ „์—ญ๋ฐฐ์ง€(GSAP) JS ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ

์ด๋ฒˆ ๋ฐฐ์ง€๋ฅผ ๋งŒ๋“ค๋ฉด์„œ ์ œ์ผ ์ค‘์š”ํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ๋ฅผ ์‚ดํŽด๋ณผ ๊ฒƒ์ด๋‹ค.

์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” JS๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— JS๋ฅผ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค.

 

JS๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”

2๊ฐ€์ง€ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

๊ตฌ๊ธ€์— lodash cdn์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์•„๋ž˜ ์‚ฌ์ดํŠธ๋กœ ์ ‘์†ํ•œ๋‹ค.

https://cdnjs.com/libraries/lodash.js

 

lodash.js - Libraries - cdnjs - The #1 free and open source CDN built to make life easier for developers

A utility library delivering consistency, customization, performance, & extras. - Simple. Fast. Reliable. Content delivery at its finest. cdnjs is a free and open-source CDN service trusted by over 12.5% of all websites, serving over 200 billion requests e

cdnjs.com

์ด ์‚ฌ์ดํŠธ์—์„œ ์ฃผํ™ฉ์ƒ‰ ๋ฒ„ํŠผ์˜ ํƒœ๊ทธ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์นดํ”ผ๊ฐ€ ๋œ๋‹ค. 

์ด ๋ณต์‚ฌํ•œ ์ฝ”๋“œ๋ฅผ index.html์— ์˜ฎ๊ธด๋‹ค.

์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์ˆ˜์‹ญ๊ฐœ์˜ ํ•จ์ˆ˜ ๋™์‹œ์‹คํ–‰์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌ/ํ•„ํ„ฐ/์ƒ‰์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ์˜คํ”ˆ์†Œ์Šค์ด๋‹ค.

์‚ฌ์šฉํ•˜๋ฉด ์Šคํฌ๋กค์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์•„๋ž˜ ์ฝ”๋“œ์˜ scrollY๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค€๋‹ค.

 

๋˜ํ•œ ๊ตฌ๊ธ€์— gsap cdn์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋งจ ์œ„์— ๋‚˜์˜ค๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์ ‘์†ํ•œ๋‹ค.

https://cdnjs.com/libraries/gsap

 

gsap - Libraries - cdnjs - The #1 free and open source CDN built to make life easier for developers

GSAP is a JavaScript library for building high-performance animations that work in **every** major browser. Animate CSS, SVG, canvas, React, Vue, WebGL, colors, strings, motion paths, generic objects...anything JavaScript can touch! No other library delive

cdnjs.com

gsap์€ scrollY์˜ ๊ฐ’์— ๋”ฐ๋ผ ๋ฐฐ์ง€๊ฐ€ ๋ณด์ด๊ณ  ์•ˆ๋ณด์ด๊ณ ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ์˜คํ”ˆ์†Œ์Šค์ด๋‹ค.

 

์œ„์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ฃผํ™ฉ์ƒ‰ ๋ฒ„ํŠผ์˜ ํƒœ๊ทธ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋ณต์‚ฌํ•ด์ฃผ๊ณ  index.html์— ๋ณต์‚ฌํ•œ๋‹ค.

 

์œ„ ์ฝ”๋“œ๋ฅผ index.html์— ๋ณต์‚ฌํ•ด์ฃผ๋ฉด ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™๋‹ค.

  <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>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.9.1/gsap.min.js" integrity="sha512-H6cPm97FAsgIKmlBA4s774vqoN24V5gSQL4yBTDOY2su2DeXZVhQPxFK4P6GPdnZqM9fg1G3cMv5wD7e6cFLZQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
  <script defer src="./js/main.js"></script>

lodash, gsap ์˜คํ”ˆ์†Œ์Šค ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•œ ๋ฉ”์ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์œ„์— ๋ณต์‚ฌํ•ด์ค€๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ ํŒŒ์ผ์€ ์ตœ๋Œ€ํ•œ ์•„๋ž˜์ชฝ์— ๋†“์•„์ค€๋‹ค.

 

์ด๋ฒˆ์—๋Š” ๋ฐฐ์ง€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณผ ๊ฒƒ์ด๋‹ค.

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

window.addEventListener('scroll', _.throttle(function () {
  console.log(window.scrollY);
  if (window.scrollY > 500){
    // ๋ฐฐ์ง€ ์ˆจ๊ธฐ๊ธฐ
    // gsap.to(์š”์†Œ, ์ง€์†์‹œ๊ฐ„, ์˜ต์…˜);
    gsap.to(badgeEl, .6, {
      opacity: 0,
      display: 'none'
    });
  } else {
    // ๋ฐฐ์ง€ ๋ณด์ด๊ธฐ
    gsap.to(badgeEl, .6, {
      opacity: 1,
      display: 'block'
    });
  }
}, 300));
//  _.throttle(ํ•จ์ˆ˜, ์‹œ๊ฐ„)

badgeEl์ด๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ  header .badges๋ฅผ ์„ ํƒํ•ด์ค€๋‹ค.

addEventListener์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํฌ๋กค ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด _.throttle๋Š”

๋™์ผ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹œํ–‰๋˜๋Š” ๊ฒฝ์šฐ์— ์ž„์˜๋กœ ์„ค์ •ํ•œ ์ผ์ • ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ(ms)์œผ๋กœ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ์‹คํ–‰์„ ๋ณด์žฅํ•œ๋‹ค.

window.scrollY๊ฐ€ 500 ์ด์ƒ์ด๋ฉด ํˆฌ๋ช…๋„๋ฅผ 0์œผ๋กœ ํ•˜์—ฌ ์š”์†Œ๊ฐ€ ๋ณด์ด์ง€ ์•Š๊ฒŒ ํ•˜๊ณ 

๋””์Šคํ”Œ๋ ˆ์ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค.

gsap์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.

0.6์ดˆ ๋™์•ˆ ์š”์†Œ๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” ํšจ๊ณผ๋ฅผ gsap.to๋ฅผ ๊ฐ€์ง€๊ณ  ์‚ฌ์šฉํ–ˆ๋‹ค.

๋ฐ˜๋Œ€๋กœ scrollY๊ฐ€ 500 ์ดํ•˜๋ฉด ํˆฌ๋ช…๋„๋ฅผ 1๋กœ ๋งŒ๋“ค๊ณ 

๋””์Šคํ”Œ๋ ˆ์ด๋Š” ๋ธ”๋ก์œผ๋กœ ๋งŒ๋“ค์–ด์„œ ๋ณด์ด๋„๋ก ํ•œ๋‹ค.


์Šคํƒ€๋ฒ…์Šค ์ „์—ญ๋ฐฐ์ง€(GSAP) ์ตœ์ข… ๊ฒฐ๊ณผ

์•„๋ž˜ ์‚ฌ์ง„์„ ๋ณด๋ฉด ๋ฐฐ์ง€๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๋Š”์ง€ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ’ป Web Develop > โ˜•๏ธ STARBUCKS ๊ฐœ๋ฐœ์ผ์ง€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

6. ์Šคํƒ€๋ฒ…์Šค ์š”์†Œ ์Šฌ๋ผ์ด๋“œ  (0) 2022.02.05
5. ์Šคํƒ€๋ฒ…์Šค ์ˆœ์ฐจ์  ์• ๋‹ˆ๋ฉ”์ด์…˜  (0) 2022.02.04
3. ์Šคํƒ€๋ฒ…์Šค ๋ฉ”์ธ๋ฉ”๋‰ด  (0) 2022.02.03
2. ์Šคํƒ€๋ฒ…์Šค ๋กœ๊ณ , header, ์„œ๋ธŒ๋ฉ”๋‰ด, ๊ฒ€์ƒ‰  (0) 2022.02.02
1. ๊ฐœ๋ฐœ ์‹œ์ž‘ ๋ฐ ๊ธฐ๋ณธ ์„ค์ • css ์ดˆ๊ธฐํ™”, ํฐํŠธ ์„ค์ •, ์•„์ด์ฝ˜ ์„ค์ •  (0) 2022.02.02
    '๐Ÿ’ป Web Develop/โ˜•๏ธ STARBUCKS ๊ฐœ๋ฐœ์ผ์ง€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • 6. ์Šคํƒ€๋ฒ…์Šค ์š”์†Œ ์Šฌ๋ผ์ด๋“œ
    • 5. ์Šคํƒ€๋ฒ…์Šค ์ˆœ์ฐจ์  ์• ๋‹ˆ๋ฉ”์ด์…˜
    • 3. ์Šคํƒ€๋ฒ…์Šค ๋ฉ”์ธ๋ฉ”๋‰ด
    • 2. ์Šคํƒ€๋ฒ…์Šค ๋กœ๊ณ , header, ์„œ๋ธŒ๋ฉ”๋‰ด, ๊ฒ€์ƒ‰
    woalsrhKR
    woalsrhKR

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”