当触发函数时,我需要能够滚动回到UI路由的Angular Onepage站点中的页面顶部,但是我使用了SimpleBar scrollbar插件作为自定义的滚动器,因此无法使用窗口滚动方法将用户带回页面顶部。
我不能使用任何窗口/文档滚动方法作为使用简单键的容器是固定的100VH容器,因此窗口始终滚动到顶部。
我尝试使用以下jQuery方法将滚动条的位置重置回顶部,但无法使其工作,并且在控制台中没有错误消息。
angular.element('#mainContent').simplebar('getScrollElement').scrollTop(0);
我还尝试了Plain JS,该js返回控制台中的"不是函数":
var mainContent = new SimpleBar(document.getElementById('mainContent'));
main -content.simplebar.getScrollelement()。scrolltop = 0;
看来new SimpleBar(xxx)
方法与data-simplebar
HTML属性不起作用。我不想以编程方式初始化简单键,所以我可以代替它:
$('#mainContent .simplebar-content-wrapper').scrollTop(some_value)
实际可滚动元素将具有simplebar-content-wrapper
类,并且它将在您添加了SimpleBar的元素内。
在其文档中提到了simplebar-content-wrapper
类,可以预期在版本中保持一致。
,如果您已经级联简单的键,可能会有问题。解决方案:
-
$('#mainContent .simplebar-content-wrapper')[0].scrollTop = some_value
:这只会滚动正确的简单键 -
$('#mainContent>>>>.simplebar-content-wrapper').scrollTop(some_value)
:SimpleBar
组件的层次结构不能保证在将来的版本中不变,并且将来可能会失败。
我找到了解决方案。您可以访问滚动元素:
const el = new SimpleBar(document.getElementById('layout'));
el.scrollContentEl.scrollTop = 0;
您可以为此尝试。
$("body").animate({ scrollTop: 0 }, "slow");
var el = new SimpleBar(document.getElementById('myElement'));
el.getScrollElement().scrollTop = 0;