jquery - Jquery滚动顶部动画不会到达所需的位置/向上滚动
问题描述
我正在开发我的音乐播放器的一项功能,该功能将您在可滚动父 div 中单击的曲目/div 居中。由于某种原因,它并不总是滚动到中心,当我向下滚动并单击较低的轨道时,它会疯狂地滚动到同一位置的顶部。此功能的主要目的是让开始探索曲目的用户不必滚动。它增强了整体的用户体验。我怎样才能使它在单击时滚动到单击的轨道并将其垂直居中到父 div 的中间?(这也将添加到下一个和上一个按钮,如您在演示中所见)
现场演示: http ://loopcove.com/playerupdated2020.php?id=30
$(".playbox").on('click', function () {
if (!$(this).hasClass('playboxplaylight') && $(this) !== nowplay) {$('.scrollit').animate({
scrollTop: $(this).offset().top - $(this).height()
},1000);}
解决方案
您的滚动条没有滚动到正确位置的原因是您正在使用的滚动插件。
该插件禁用原生滚动并使用翻译平滑滚动页面。
这使得 jQuery 的.offset()
函数返回错误的值。
获得正确值的解决方案是
$(".playbox").on('click', function () {
// Your if checks here
$('.scrollit').animate({
scrollTop: $(this)[0].offsetTop - $(this).height()
},1000);
})
但是上面的代码仍然不能完美地居中滚动像素。为此,您必须减去顶部栏和底部 bor 的高度。
$(".playbox").on('click', function () {
// Your if checks here
$('.scrollit').animate({
scrollTop: $(this)[0].offsetTop - $(this).height() - ($('.menu-search-box').height() + $('.play-bar').height())
},1000);
})
推荐阅读
- node-red - 尝试登录时节点红色崩溃
- javascript - 根据导入的值在表的下拉列表中设置一个值 [javascript, jquery]
- angular - 角度动画不起作用(状态之间没有转换)
- android - 前台服务中的 Android webRTC 调用
- swift - 在 appDelegate 中加载数据时,如何在 MainviewController 中显示加载按钮 (SVProgressHUD)?
- sql-server - 获取行和相关行
- python - Python:循环检查互联网
- macos - 在 Retina 屏幕上使用 Metal 损坏调整大小的纹理
- c# - GetAwaiter() 会抛出一个异常吗?
- json - 将 apiDefaults 的值设置为变量