코드펜 https://codepen.io/gamza/pen/VbEOYv
▣ 구상
- 스크롤바 드래그 시 컨텐츠가 역방향으로 움직입니다.
▣ 조건
➊ 컨텐츠
➋ 스크롤바
➌ 드래그 기능 ( 역방향 이동 )
▣ 준비
· 컨텐츠에 들어갈 이미지 ( 300px * 1000px )
· 스크롤바 드래그 기능을 위한 메소드 draggable( ) 를 사용하기 위해서
jquery-ui.min.js 를 추가합니다. ( v1.8.23 )
◆ 레이아웃 ( html, css )
1. 컨텐츠 영역 / 스크롤바 영역을 div로 나눕니다.
2. 컨텐츠를 float : left 시켜 좌측으로 보냅니다.
3. 스크롤바를 컨텐츠의 width 만큼 오른쪽으로 옮깁니다.
4. 컨텐츠와 스크롤바를 감싸는 부모요소( viewport )를 추가하여,
컨텐츠 내부 이미지가 viewport 로부터 overflow 할 수 있도록 설정합니다.
● html
<div id = "wrap"> <div id="content"> <img src="pg.jpg" /> </div> <div id ="scrollBar"> <div id="bar"></div> </div> </div>
● css
#wrap{ width:330px; height:600px; margin:100px auto; overflow:hidden; } #content{ height:600px; width:300px; float:left; } #scrollBar{ width:30px; height:600px; margin-left:300px; background-color:#c8c8c8; } #bar{ width:30px; height:30px; background:#000; }
◆ 기능( jquery )
1. 컨텐츠의 position 을 동적으로 움직이기 위해 다음 css 를 추가합니다.
#content{position:relative;};
2. 스크롤바 클릭 - 드래그
3. 드래그 시 컨텐츠의 top 값 역방향으로 동적 변경
● javascript
$("#bar").draggable({axis:'y',containment:'parent'}); $("#bar").on("drag",function(event, ui){ getPos() }); var min = 0; // 컨텐츠 기본 top 값 var max = -400; // 컨텐츠 최대(소) top 값 ( -400 을 초과하면 여백이 올라온다. ) function getPos(){ var barTop = $("#bar").css("top"); // 스크롤바의 top값 변수저장 barTop = parseInt(barTop); // 실수를 정수로 변환 var pos = ( barTop*( max - min ))/570 + min; // 스크롤값 - 컨텐츠 top값으로 변환 $("#content").css("top",pos); }