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

home2 게시판 JavaScript, TS 게시판 캐러셀 슬라이드 스와이프 응용문제 축약

캐러셀 슬라이드 스와이프 응용문제 축약

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

    손성호
    참가자
     var swipestart = 0;
            var click = false;
            var cnt = $('.slide-box').length;
            for (i = 0; i < cnt; i++) {
                $('.slide-box').eq(i).on('mousedown', function(e) {
                    console.log(e.clientX);
                    swipestart = e.clientX;
                    click = true;
                })
                $('.slide-box').eq(i).on('mousemove', function(e) {
                    if (click == true) {
                        console.log(e.clientX - swipestart);
                        $('.slide-container').css('transform', `translateX(calc(${e.clientX - swipestart}px - ${i}00vw))`)
                    }
                    
                })
                $('.slide-box').eq(i).on('mouseup', function(e) {
                    click = false;
                    if (i == 0) {
                        if ((e.clientX - swipestart) < -200) {
                            $('.slide-container')
                                .css('transition', 'all 0.5s')
                                .css('transform', `translateX(-100vw)`);
                        } else {
                            $('.slide-container')
                                .css('transition', 'all 0.5s')
                                .css('transform', `translateX(0vw)`);
                        }
                    }
                    if ((e.clientX - swipestart) < -200) {
                        $('.slide-container')
                            .css('transition', 'all 0.5s')
                            .css('transform', `translateX(-${i+1}00vw)`);
                    } else if ((e.clientX - swipestart) > 200) {
                        $('.slide-container')
                            .css('transition', 'all 0.5s')
                            .css('transform', `translateX(-${i-1}00vw)`);
                    } else {
                        $('.slide-container')
                            .css('transition', 'all 0.5s')
                            .css('transform', `translateX(-${i}00vw)`);
                    }
                    setTimeout(() => {
                        $('.slide-container').css('transition', 'none')
                    }, 500)
                    
    
                })
            }
    
    1번문제는 풀었는데 반복문으로 축약하려하니 잘 안되네요 
    1번째 그림카드 클릭했다가 떼면 사진 세장이 한꺼번에 넘어갑니다
    크롬 관리자로 확인해보니 
     $('.slide-container').css('transform', `translateX(calc(${e.clientX - swipestart}px - ${i}00vw))`)
    부분에서 제가 의도한건 1번카드 리스너에선 -000vw 2번카드 리스너에선 -100vw 같은걸 원했는데
    1번카드를 눌렀다가 떼니 -300vw으로 한꺼번에 가 있습니다. 문제가 뭘까요.. 
    
    
    #99299

    codingapple
    키 마스터
    for (i = 0; 
    for문에 let 빠진듯요
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 호 / 개인정보관리자 : 박종흠