Sapper:CSS 锚链接的平滑滚动对路由链接产生了不必要的影响

Sapper: CSS smooth scrolling for anchor links has unwanted impact on route links

在 Sapper 应用程序中,我正在使用 CSS 平滑滚动以在给定页面(路由)内使用锚链接导航时获得更好的效果:

html {
  scroll-behavior: smooth
}

但是,这会导致导航到其他路由的行为不正常:滚动位置不会被重置到页面顶部,而是与之前的路由(在 Firefox 中)保持不变。 (在 Chrome 中,同样的事情,但页面随后平滑地滚动回顶部。)

我知道这是因为 Sapper 的工作方式,但是是否有已知的解决方案允许使用 CSS 平滑滚动(用于锚链接)同时让路线导航“按预期”工作并直接转到加载页面顶部?

现场示例:https://www.cinematheque.fr/henri/html { scroll-behavior: smooth; }被注释掉了,你可以在devtools中激活它。标题下的块是一堆锚链接。

您可以尝试为使用 window.scrollTo 滚动到您的元素的锚链接创建一个函数,这允许您禁用破坏您的应用程序的 html css 指令

我写了这个简单的例子:https://svelte.dev/repl/0a9f812027da4d99b253f39a1941986c?version=3.31.0