我有四个div,它们都适合查看端口。我想滚动下一个div适合查看页面向下按钮点击按钮(键码:34)。现在我做了鼠标滚动。我想修改它页面向下/向上键按下。默认div一个位于页面顶部向下键按下div 2在视图端口上,反之亦然用于向上翻页按键
//Set each section's height equals to the window height
$('.clildClass').height($(window).height());
/*set the class 'active' to the first element
this will serve as our indicator*/
$('.clildClass').first().addClass('active');
/* handle the mousewheel event together with
DOMMouseScroll to work on cross browser */
$(document).on('mousewheel DOMMouseScroll', function (e) {
e.preventDefault();//prevent the default mousewheel scrolling
var active = $('.active');
//get the delta to determine the mousewheel scrol UP and DOWN
var delta = e.originalEvent.detail < 0 || e.originalEvent.wheelDelta > 0 ? 1 : -1;
//if the delta value is negative, the user is scrolling down
if (delta < 0) {
//mousewheel down handler
next = active.next();
//check if the next section exist and animate the anchoring
if (next.length) {
/*setTimeout is here to prevent the scrolling animation
to jump to the topmost or bottom when
the user scrolled very fast.*/
var timer = setTimeout(function () {
/* animate the scrollTop by passing
the elements offset top value */
$('body, html').animate({
scrollTop: next.offset().top
}, 'slow');
// move the indicator 'active' class
next.addClass('active')
.siblings().removeClass('active');
clearTimeout(timer);
}, 800);
}
} else {
//mousewheel up handler
/*similar logic to the mousewheel down handler
except that we are animate the anchoring
to the previous sibling element*/
prev = active.prev();
if (prev.length) {
var timer = setTimeout(function () {
$('body, html').animate({
scrollTop: prev.offset().top
}, 'slow');
prev.addClass('active')
.siblings().removeClass('active');
clearTimeout(timer);
}, 800);
}
}
});
&#13;
.clildClass{
min-height:100vh;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="parentClass">
<div class="clildClass" id="div1">
div one
</div>
<div class="clildClass" id="div2">
div two
</div>
<div class="clildClass" id="div3">
div three
</div>
<div class="clildClass" id="div4">
div four
</div>
</div>
&#13;
答案 0 :(得分:1)
尝试以下方法:
//Set each section's height equals to the window height
$('.clildClass').height($(window).height());
/*set the class 'active' to the first element
this will serve as our indicator*/
$('.clildClass').first().addClass('active');
$(window).on('keydown', function(e) {//use the keydown event
var active = $('.active');
e.preventDefault(); //prevent the default mousewheel scrolling
console.log(2)
if (e.keyCode == 40) {//test if the key is the down arrow
next = active.next();
//check if the next section exist and animate the anchoring
if (next.length) {
/*setTimeout is here to prevent the scrolling animation
to jump to the topmost or bottom when
the user scrolled very fast.*/
var timer = setTimeout(function() {
/* animate the scrollTop by passing
the elements offset top value */
$('body, html').animate({
scrollTop: next.offset().top
}, 'slow');
// move the indicator 'active' class
next.addClass('active')
.siblings().removeClass('active');
clearTimeout(timer);
}, 800);
}
} else if (e.keyCode == 38) {//test if the key is the up arrow
prev = active.prev();
if (prev.length) {
var timer = setTimeout(function() {
$('body, html').animate({
scrollTop: prev.offset().top
}, 'slow');
prev.addClass('active')
.siblings().removeClass('active');
clearTimeout(timer);
}, 800);
}
}
});