破折号回调元素滚动

时间:2020-07-20 07:49:29

标签: python plotly-dash

我有一个Dash应用程序,我想要像这样滚动元素

<div id="scrollhere"></div>
<a href="#scrollhere"></a>

我想使用回调而不是<a>元素。 例如:

@app.callback(
    Output('url', 'pathname'),
    [Input('map', 'clickData')]
)
def map_click_callback(clicked):
    if not clicked:
        raise PreventUpdate

    return "#scrollhere"

这可能吗?

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,并通过客户端回调解决了这个问题,虽然不完全相同,但与此类似:

app.clientside_callback(
    """
    function(clicks, elemid) {
        document.getElementById(elemid).scrollIntoView({
          behavior: 'smooth'
        });
    }
    """,
    Output('garbage-output-0', 'children'),
    [Input('button-to-scroll', 'n_clicks')],
    [State('target-element', 'id')]
)

garbage-output-0这里仅仅是因为Dash要求您将某些东西作为输出。 我非常确定,但是一定有更好的方法,例如创建一个组件,该组件执行与我发布的JS代码类似的JS代码,但是可以在服务器端调用。