滚动到 sveltekit 中元素的底部

Xzo*_*oky 3 javascript svelte sveltekit

页面加载时如何使元素滚动到底部?

我尝试在 中执行此操作onMount,但该元素未定义。

我正在使用 访问该元素bind:this

当我尝试让元素稍后滚动时(例如,单击按钮时),它会起作用。

这是我用来使元素滚动到底部的代码(取自svelte repl):

node.scroll({ top: node.scrollHeight, behavior: 'smooth' });
Run Code Online (Sandbox Code Playgroud)

H.B*_*.B. 8

这工作得很好:

onMount(() => scrollToBottom(element))
Run Code Online (Sandbox Code Playgroud)

REPL

如果保证该元素位于页面上(即不在只会有条件地添加元素(如 )的内容内#if),则它将绑定在 中onMount

REPL 的代码可能不等于您的实际代码?


对于许多 DOM 交互来说,动作更适合。在这种情况下,scrollToBottom对于初始滚动来说已经是合适的操作。它可以扩展为在列表更改时也触发,如下所示:

const scrollToBottom = node => {
    const scroll = () => node.scroll({
        top: node.scrollHeight,
        behavior: 'smooth',
    });
    scroll();

    return { update: scroll }
};
Run Code Online (Sandbox Code Playgroud)
<div use:scrollToBottom={list} ...>
Run Code Online (Sandbox Code Playgroud)

list作为参数传递以使其成为update触发的依赖项)

REPL