Dorothy_YANG
With Dorothy
Dorothy_YANG
전체 방문자
오늘
어제
  • 분류 전체보기 (279)
    • Hi, I'm Dorothy 🕵️‍♂️ (21)
      • Slowly but Surely (18)
      • IT certifications (3)
    • 🤯TIL (80)
      • HTML & CSS (2)
      • Javascript & jQuery (13)
      • React (13)
      • C언어 (1)
      • JAVA (22)
      • Python (2)
      • Oracle SQL (10)
      • My SQL (5)
      • Spring (12)
    • 💻Programmers (17)
    • 🏫 Open API_JAVA (101)
    • 🌎 Project (10)
      • Shopping (10)
    • 💥 Error (24)
    • ⚙ Setting (23)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • 연습문제
  • 파이썬온라인
  • googlecolaboratory
  • CSS
  • 노마드코더
  • 백준
  • 오류해결
  • 비쥬얼스튜디오코드
  • 시작일종료일
  • 창초기화
  • Database
  • AllArgsConstructor
  • java
  • sql기간
  • oracle
  • 콜라보레이토리
  • 기간쿼리
  • colaboratory
  • 이것이자바다
  • Eclipse
  • 코딩앙마
  • 서버등록
  • spring
  • 기간설정
  • HTML
  • Javascript
  • SQL
  • SQLD합격
  • SQLD합격후기
  • 독학후기

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Dorothy_YANG

With Dorothy

[26일차] scroll 시 발생되는 이벤트 핸들러
🏫 Open API_JAVA

[26일차] scroll 시 발생되는 이벤트 핸들러

2022. 8. 26. 09:39
728x90

20220825(목)

  • 목차
    - scroll 할 때 발생되는 이벤트 핸들러
    - currentSection1

< scroll 할 때 발생되는 이벤트 핸들러 >

  • 이벤트 핸들러 { 
    1. yOffset
    2. sectionYOffset
    scrollProc();
    }
  • 스크롤 할때마다.
    1) yOffset 계산
    2) sectionyOffset 계산
    3) mode 설정
    4) scrollProc() 호출. ➡ playAnimation()

< currentSection1 >

  • 스크롤 할 때 우리가 적용해야하는 css값을 계산해서 animation을 적용하기
    ➡ 한 범위 내에서만 Animation 돌게 하기

 

//현재 섹션에서 적용해야할 CSS값을 계산하는 함수.
    const calcValue = function(values)
    {
        let result;

        const height = sectionSet[currentSection].height;
        let rate;

        let partStart;      // 실제 start값
        let partEnd;        // 실제 end값
        let partHeight;     // 높이.

        if (values.length == 2)
        {
            rate = sectionYOffset / height;
            result = (rate * (values[1] - values[0])) + values[0];

        }
 
        // start, end값이 들어온 경우. [0, 1, {start: 0.1, end: 0.2}],
        else if (values.length === 3)
        {
            partStart = values[2].start * height;
            partEnd   = values[2].end * height;
            partHeight = partEnd - partStart;

            if (sectionYOffset < partStart)
            {
                result = values[0];

            }
            else if (sectionYOffset > partEnd)
            {
                result = values[1];

            }
            else
            {
                rate = (sectionYOffset - partStart) / partHeight;
                result = (rate * (values[1] - values[0])) + values[0]
               
            }
           
        }

        return result;

    }

    // 처음부터 끝까지 스크롤 할 때마다 계속 애니메이션이 진행되는데
    // 섹션별로 진행되는 애니메이션을 구별할 필요가 있다.
    const playAnimation = function()
    {
        const values = sectionSet[currentSection].vals;
        const objects = sectionSet[currentSection].objs;
        const scrollRate = sectionYOffset / sectionSet[currentSection].height;

        switch(currentSection)
        {
           // 0번 섹션의 애니메이션 처리
            case 0 :
                // 0.1 ~ 0.2
                if ((scrollRate > 0.09) && (scrollRate < 0.21))
                {
                    objects.messageA.style.opacity = calcValue(values.messageA_opacity_in);

                }
                // 0.25 ~ 0.3
                else if ((scrollRate > 0.24) && (scrollRate < 0.31))
                {
                    objects.messageA.style.opacity = calcValue(values.messageA_opacity_out);

                }
               
                break;


            case 1 :
                // 1번 섹션의 애니메이션 처리                            
                break;

        }
    }

 

728x90
저작자표시 (새창열림)

'🏫 Open API_JAVA' 카테고리의 다른 글

[28일차] html / css 복습 / JavaScript / 함수 / Object / JSON / Event  (0) 2022.09.01
[27일차] Video 이론 / 디코딩 / Real Apple Pro canvas  (0) 2022.08.31
[25일차] Opacity로 Animation 효과  (0) 2022.08.24
[23~24일차] position / 개인 프로젝트 진행  (0) 2022.08.23
[22일차] flex / Stack / Queue  (0) 2022.08.20
    '🏫 Open API_JAVA' 카테고리의 다른 글
    • [28일차] html / css 복습 / JavaScript / 함수 / Object / JSON / Event
    • [27일차] Video 이론 / 디코딩 / Real Apple Pro canvas
    • [25일차] Opacity로 Animation 효과
    • [23~24일차] position / 개인 프로젝트 진행
    Dorothy_YANG
    Dorothy_YANG
    Slowly but Surely, 비전공 문과생의 개발공부

    티스토리툴바