在过去的两天里,我一直在通过 internetz 挖掘关于将片段滚动到有角度的视图中。
假设我们有一个静态网页,其中包含一堆充当片段的 id-s。并有一个侧导航栏来浏览带有链接的片段。
我试过路由器anchorScroll,只是将它添加到模块中对我没有任何作用。它只是为您提供 URL 中的片段,但没有滚动。
我试过viewportScroller。这样做的主要问题是它第一次不起作用(例如:您被重定向到此静态页面并带有所需的片段,但滚动没有发生,如果您一直在同一页面上并重复该过程,如果您单击与您正在访问的网址相同的侧导航栏上的链接,它就可以工作:
([foo]/[bar]#[fragment])
它也不起作用,因为没有更改导航。
用于路由器的额外选项:
const routerOptions: ExtraOptions = {
useHash: false,
anchorScrolling: 'enabled',
scrollPositionRestoration: 'enabled',
onSameUrlNavigation: 'reload'
};
ps.: useHash: true 没有改变什么。
ngOnInit 内的 viewportScroller:
this.viewportScroller.setOffset([0, 64]);
this.viewportScroller.setHistoryScrollRestoration('auto');
this.router.events.pipe(filter(element => element instanceof Scroll)).subscribe((element: any) => {
console.log(element)
this.viewportScroller.scrollToAnchor(element.anchor);
});
没有滚动到片段的最简单方法是什么!!!使用这个:
ngOnInit() {
this.route.fragment.subscribe((fragment: string) => {
if (fragment && document.getElementById(fragment) != null) {
document.getElementById(fragment).scrollIntoView({ behavior: "smooth" });
}
});
}
b/c 每次都有效,但不是 TS,因为我们在公司的项目中使用 TS。
请帮帮我