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

home2 게시판 JavaScript, TS 게시판 캐러셀 스와이프 응용질문

캐러셀 스와이프 응용질문

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

    임장원
    참가자
    안녕하세요 선생님
    
    캐러셀 스와이프 응용문제 풀고 있는데 질문 있습니다.
    
    지금 앞뒤로 스와이프 하는건 잘 되는데 첫번째를 제외한 나머지 슬라이드는 mousedown을 한 상태로 mousemove를 했을때 슬라이드 애니메이션이 제대로 작동하지않고 그냥 이전/다음 사진으로 넘어갑니다.
    어떻게 해결할 수 있을까요?
    
    그리고 제가 확장성을 좀 높이고 싶어서 인덱스를 $(e.currentTarget).index()를 해서 구했는데 이렇게 하면 addeventlistener가 중첩이 되는데 중첩됐을때 기능이 많이 떨어지는지도 궁금합니다.
    
    답변 미리 감사드립니다.
    
    
    <script>
    var start = 0;
    var isDown = false;
    let i = 0;
    $('.slide-box').on('mousedown', function(e) {
        i = $(e.currentTarget).index();
        $('.slide-box').eq(i).on('mousedown', function(e) {
            start = e.clientX;
            isDown = true;
        });
        $('.slide-box').eq(i).on('mousemove', function(e) {
            if (isDown && i == 0) {
                $('.slide-container').css('transform', `translateX(${e.clientX - start}px)`);
             } else if (isDown && i != 0) {
                $('.slide-container').css('transform', `translateX(${e.clientX - start}px - 100vw)`);
             };
        });
        $('.slide-box').eq(i).on('mouseup', function(e) {
            isDown = false;
            if (e.clientX - start < -100 && isDown == false && i < 2) {
                $('.slide-container').css('transition', 'all 0.5s').css('transform', `translateX(-${i+1}00vw)`);
             } else if (e.clientX - start > 100 && isDown == false && i > 0) {
                $('.slide-container').css('transition', 'all 0.5s').css('transform', `translateX(-${i-1}00vw)`);
             };
            setTimeout(() => {
                $('.slide-container').css('transition', 'none')
             }, 500);
           });
        }); 
    </script>
    #99162

    codingapple
    키 마스터
    그러면 클릭할 때 마다 이벤트리스너가 부착되는데 그럼 성능이 매우 떨어질 수 있습니다 
    $() 쓰면 한 번에 전부 부착가능한데 굳이 mousedown 이벤트리스너 안에 모든걸 넣지는 맙시다
    #99224

    임장원
    참가자
    넵 감사합니다 다시 한번 해볼게요!
3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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