• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 리액트로 가로 마우스휠 스크롤이벤트

리액트로 가로 마우스휠 스크롤이벤트

4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 글쓴이
  • #31205

    현정
    참가자

    리액트에서 가로스크롤 마우스휠로 스크롤하는걸 구현하고 싶은데 어떻게 해야되나요

    구글링해서 찾아본것들을 적용하면 자꾸 화면이 안보이거나 오류가 뜨는데 어떻게 할까요..ㅠㅠㅠ

    제가 대충 긁어 모았던것들도 첨부해 보겠습니다,. 이걸 어찌 적용해야될지모르겟습니당

     useEffect(() => {
        document.addEventListener('scroll', (e) => {
          console.log(e);
          const horizontal = e.target.scrollingElement.scrollLeft;
          const vertical = e.target.scrollingElement.scrollTop;

          e.target.scrollingElement.scrollLeft = vertical
          console.log(horizontal, vertical)
        });
      }, [])
      container.addEventListener('wheel', (ev) => {
        ev.preventDefault();  // stop scrolling in another direction
        // console.log(ev.deltaY);
        container.scrollLeft += (ev.deltaY + ev.deltaX);
        // console.log('Wheel Move: '+ container.scrollLeft);
      });
     
      // horizontal scrolling with arrow keys
     
      document.addEventListener('keydown', function(event) {
        if (event.code == 'ArrowRight') {
          container.style.scrollBehavior = 'smooth';
          container.scrollLeft += 500;
          container.style.scrollBehavior = null;
          }
          if (event.code == 'ArrowLeft') {
            container.style.scrollBehavior = 'smooth';
            container.scrollLeft -= 500;
            container.style.scrollBehavior = null;
          }
      });
     
      // scroll progress
     
      container.addEventListener('scroll', handleScroll);
     
      function handleScroll() {
          let winScroll = container.scrollLeft || container.documentElement.scrollLeft;
          let width = container.scrollWidth - container.clientWidth;
          let scrolled = (winScroll / width) * 100;
     
          document.getElementById("progressBar").style.width = scrolled + "%";
      }

    #31243

    codingapple
    키 마스터

    https://codesandbox.io/s/jovial-payne-z4ct3?file=/src/useSideScroll.js 

    이걸 참고해봅시다 

    #31271

    현정
    참가자

    질문을 올리고나서 그냥 jquery로 적용하는걸 찾아서 했는데 그렇게 해도 상관이 없나요? 

    $(window).on('mousewheel',function(e){

        var wheelDelta = e.originalEvent.wheelDelta;

        if(wheelDelta > 0){

          console.log("up");

          $(this).scrollLeft(-wheelDelta + $(this).scrollLeft());

        }else{

        console.log("down");

          $(this).scrollLeft(-wheelDelta + $(this).scrollLeft());

        }

    });

    #31282

    codingapple
    키 마스터

    상관은 없지만 사이트 용량은 70kb 정도 더 차지하겠군요 

    mousewheel 이벤트는 요즘은 쓰지말라고 하긴 합니다 

4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠