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

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

캐러셀 스와이프 응용

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

    정창엽
    참가자
    var 시작좌표 = 0;
    var 누름 = false;
    $('.slide-box').on('mousedown', function(e){
        var id = e.target.dataset.id;
        var value = parseInt(e.target.dataset.value);
        시작좌표 = e.clientX;
        누름 = true;
        currentSlide(id, value);
    });
    function currentSlide(id, value){
        $('.slide-box').eq(id).on('mouseup', function(e){
            누름=false;
            console.log("넘어온 id 값" + id);
            console.log(e.clientX - 시작좌표);
            if(id == 0){
                console.log("id = 0");
                if(e.clientX - 시작좌표 <= -300){
                    $('.slide-container').css('transition', 'all 0.5s').css('transform', 'translateX(-100vw)');
                }
                else{
                    $('.slide-container').css('transition', 'all 0.5s').css('transform', 'translateX(0vw)');
                }
            }
            if(id == 1){
                console.log("id = 1");
                if(e.clientX - 시작좌표 <= -300){
                    $('.slide-container').css('transition', 'all 0.5s').css('transform', 'translateX(-200vw)');
                }
                else if (e.clientX - 시작좌표 >= 300){
                    $('.slide-container').css('transition', 'all 0.5s').css('transform', 'translateX(0vw)');
                }
                else{
                    $('.slide-container').css('transition', 'all 0.5s').css('transform', 'translateX(-100vw)');
                }
            }
            if(id == 2){
                console.log("id = 2");
                if(e.clientX - 시작좌표 >= 300){
                    $('.slide-container').css('transition', 'all 0.5s').css('transform', 'translateX(-100vw)');
                }
                else{
                    $('.slide-container').css('transition', 'all 0.5s').css('transform', 'translateX(-200vw)');
                }
            }
            setTimeout(() =>{
                $('.slide-container').css('transition', 'none');
                console.log("지움");
            },500)
        });
        $('.slide-box').eq(id).on('mousemove', function(e){
            // console.log("여긴 무슨 값" + id, e.clientX - 시작좌표);
            if(누름==true ){
                if((e.clientX - 시작좌표) < 0 && id == 0){
                    $('.slide-container').css('transform', `translateX(calc(${e.clientX - 시작좌표}px - ${value}vw))`);
                }
                else if(id == 1){
                    $('.slide-container').css('transform', `translateX(calc(${e.clientX - 시작좌표}px - ${value}vw))`);
                }
                else if((e.clientX - 시작좌표) > 0 && id == 2){
                    $('.slide-container').css('transform', `translateX(calc(${e.clientX - 시작좌표}px - ${value}vw))`);
                }
            }
        });
    }
    응용 1, 2번 정상적으로 작동합니다.
    
    궁금한 부분이  있어서 질문합니다. 
    
    calc() 안 쓰면 실시간으로 translateX가 안되고 그림만 팍팍 변하던데, 서로 다른 단위의 
    사칙연산이라서 실시간으로 반영이 안되는걸까요? 제가 생각하는 게 아니라면 다른 이유가
    궁금합니다.
    
    가끔씩 그림을 팍팍 넘기면 애니메이션 씹히는 현상이 생기는데 혹시 제가 작성한 코드에서
    애니메이션 씹히는 현상을 야기하는 부분이 있을까요?
    아니면 단순히 너무 빠르게 이동해서 브라우저가 반응을 못 하는 걸까요?
    
    맨날 맨날 질문 해서 죄송하지만, 좀 귀찮게 하겠습니다 .허허허허;;
    #71403

    codingapple
    키 마스터
    transition : all 0.5s 스타일이 잘 붙는지확인하거나 css파일에 .slide-container{ transform : translateX(0vw) } 같은 스타일 넣어봅시다
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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