使用JS或jQuery滚动容器内的特定元素
问题描述:
我有巨大的侧边栏元素,并且当页面被滚动的侧边栏指向当前在视口中的元素。但有时活动元素不在侧栏可见空间之外,即低于或高于边界。然后用户需要手动滚动才能看到活动元素。使用JS或jQuery滚动容器内的特定元素
我想尝试使用逻辑来确定活动元素是否在侧栏可见空间外,如果需要则自动滚动。
$(window).on('scroll', function() {
var scrollTop = $(this).scrollTop();
var container = $('#sectionMenu');
var containerHeight = container.height();
$(data).each(function() {
var topDistance = $(this).offset().top - 250;
var id = $(this).attr('id');
var elem = $('#_' + id);
if ((topDistance) < scrollTop && (topDistance + $(this).height() * 0.95) > scrollTop) {
if (autoScrollFlag) {
if (!elem.hasClass('sideBarActive')) {
var scrollPosition = elem.offset().top - container.offset().top;
removeActiveMenuItems(data);
elem.addClass('sideBarActive');
if (containerHeight < scrollPosition) {
// TODO automated scroll
}
}
}
autoScrollFlag = 1;
}
});
});
答
已经为我工作的解决方案是这样的。
if (containerHeight < scrollPosition) {
container.animate({
scrollTop: '+=100px'
}, 800);
}