Myślę, że przy odrobinie jQuery można osiągnąć to, czego szukasz. Podstawową ideą jest obsługa niektórych zdarzeń (onmouseenter, mousedown, etc ...), których możesz użyć do rozpoczęcia przewijania.
Imagining masz jakieś znaczników, który wygląda tak:
<div id="parent">
<div class="contentBlock">1</div>
<div class="contentBlock">2</div>
<div class="contentBlock">3</div>
<div class="contentBlock">4</div>
<div class="contentBlock">5</div>
</div>
<span id="panLeft" class="panner" data-scroll-modifier='-1'>Left</span>
<span id="panRight" class="panner" data-scroll-modifier='1'>Right</span>
i kilka stylów, aby zapewnić spowoduje to okno, aby przejść:
#parent {
width:6000px;
}
.contentBlock {
font-size:10em;
text-align:center;
line-height:400px;
height:400px;
width:500px;
margin:10px;
border:1px solid black;
float:left;
}
.panner {
border:1px solid black;
display:block;
position:fixed;
width:50px;
height:50px;
top:45%;
}
.active{
color:red;
}
#panLeft {
left:0px;
}
#panRight {
right:0px;
}
Można użyć kombinacji stylizacji, setInterval i jQuery.scrollLeft(), aby osiągnąć pożądany efekt.
(function() {
var scrollHandle = 0,
scrollStep = 5,
parent = $(window);
//Start the scrolling process
$(".panner").on("mouseenter", function() {
var data = $(this).data('scrollModifier'),
direction = parseInt(data, 10);
$(this).addClass('active');
startScrolling(direction, scrollStep);
});
//Kill the scrolling
$(".panner").on("mouseleave", function() {
stopScrolling();
$(this).removeClass('active');
});
//Actual handling of the scrolling
function startScrolling(modifier, step) {
if (scrollHandle === 0) {
scrollHandle = setInterval(function() {
var newOffset = parent.scrollLeft() + (scrollStep * modifier);
parent.scrollLeft(newOffset);
}, 10);
}
}
function stopScrolling() {
clearInterval(scrollHandle);
scrollHandle = 0;
}
}());
Pełna jsFiddle wykazując tego podejścia: http://jsfiddle.net/jwcarroll/atAHh/
Dzięki temu jest absolutnie doskonały! Rozwiązałeś duży ból głowy! I z bardzo małą zmianą, możesz ją przekonwertować, aby przewinął onmousedown (jeśli ktokolwiek jest zainteresowany, zmieniłem skrzypce tutaj, aby pracować nad tym, co nie zostało zawieszone: http://jsfiddle.net/atAHh/2/). – user2634764
@ user2634764 - Nie ma problemu. Miło, że mogłem pomóc :) – Josh