-
자바스크립트 제이쿼리 슬라이더 - 마우스 휠 스크롤 기능 (JavaScript & jQuery Slider - mouse wheel scroll)
2023. 1. 28.
See the Pen 자바스크립트 제이쿼리 자체제작 마우스 휠 슬라이드 심화 by kimyangsun (@kimyangsun) on CodePen.
자바스크립트 제이쿼리 슬라이더 - 마우스 휠 스크롤 기능 (JavaScript & jQuery Slider - mouse wheel scroll) 코드펜 예제입니다.
화면을 스크롤 하면 슬라이더 콘텐츠가 나오는데 콘텐츠 안에 마우스를 갖다 대고 마우스 휠 스크롤을 하면 하나씩 넘어가게 됩니다. 다 넘어가면 페이지 전체 스크롤이 다시 넘어가는 형태입니다. :)
/* 전역변수 */ // 페이지들 var Page__$pages; // 페이지 개수 var Page__pagesCount; /* 초기화 함수들 */ // 페이지 관련 요소들을 초기화 한다. function Page__init() { Page__initVars(); Page__initElAttrs(); Page__initSideBarMenu1Item(); Page__initMouseWheel(); Page__initKeyUp(); } // 필수적인 전역변수들을 초기화 한다. function Page__initVars() { Page__$pages = $('.pages-box > div'); Page__pagesCount = Page__$pages.length; } // 필수적인 엘리먼트 속성들을 초기화한다. function Page__initElAttrs() { Page__setCurrentIndex(0); } // 사이바 메뉴1 아이템을 초기화한다. function Page__initSideBarMenu1Item() { $('.side-bar > .menu-1 > ul > li').click(function() { var index = $(this).index(); Page__moveTo(index); }); } function Page__initMouseWheel() { $('.box-1').bind("mousewheel DOMMouseScroll", function(e) { var isUp = true; if ( e.originalEvent.wheelDelta < 0 ) { isUp = false; } if ( isUp ) { if ( Page__isCurrentPageFirst() == false ) { Page__movePrev(); e.preventDefault(); } } else { if ( Page__isCurrentPageLast() == false ) { Page__moveNext(); e.preventDefault(); } } }); } function Page__initKeyUp() { $(window).keyup(function(e) { if ( e.keyCode == 37 || e.keyCode == 38 ) { Page__movePrev(); } else if ( e.keyCode == 39 || e.keyCode == 40 ) { Page__moveNext(); } }); } /* 게터, 세터 */ function Page__isCurrentPageFirst() { return Page__getCurrentIndex() == 0; } function Page__isCurrentPageLast() { return Page__getCurrentIndex() + 1 == Page__pagesCount; } function Page__getCurrentIndex() { var index = $('body').attr('data-current-page-index'); index = parseInt(index); return index; } function Page__setCurrentIndex(index) { $('body').attr('data-current-page-index', index); } function Page__getPositionLeft() { var pageIndex = Page__getCurrentIndex(); return pageIndex * -100 + '%'; } /* 갱신함수 */ function Page__updateSideBarMenu1Item() { var pageIndex = Page__getCurrentIndex(); $('.side-bar > .menu-1 > ul > li.active').removeClass('active'); $('.side-bar > .menu-1 > ul > li').eq(pageIndex).addClass('active'); } function Page__updatePositionLeft() { var newPositionLeft = Page__getPositionLeft(); $('.pages-box').stop().animate({ left:newPositionLeft }, 500); } /* 사용자 이벤트 함수 */ function Page__moveNext() { var index = Page__getCurrentIndex(); Page__moveTo(index + 1); } function Page__movePrev() { var index = Page__getCurrentIndex(); Page__moveTo(index - 1); } /* 코어로직 */ function Page__moveTo(pageIndex) { if ( pageIndex < 0 ) { pageIndex = 0; } else if ( pageIndex >= Page__pagesCount ) { pageIndex = Page__pagesCount - 1; } Page__setCurrentIndex(pageIndex); Page__updateSideBarMenu1Item(); Page__updatePositionLeft(); } /* 초기화 실행 */ Page__init();
'코딩 기록 > 코딩 소스 [HTML & CSS & JS]' 카테고리의 다른 글
자바스크립트 제이쿼리 아코디언 메뉴 기능 예제 (JavaScript & jQuery Accordion menu) (0) 2023.01.28 자바스크립트 제이쿼리 탭 메뉴 기능 (JavaScript & jQuery Tab menu) (0) 2023.01.28 자바스크립트 제이쿼리 세로 슬라이더 예제 (JavaScript & jQuery Vertical Slider) (0) 2023.01.28 Swiper 슬라이드 자동재생 무한 롤링 (Swiper slider autoplay infinite rolling) (0) 2023.01.28 Swiper 슬라이드 반응형 - 리사이즈시 화면 크기에 따라 적용 & 해제(swiper slider responsive resize) (0) 2023.01.28 댓글