获取窗口.scrollTo(0, 0);去工作

Getting window.scrollTo(0, 0); to work

本文关键字:工作 scrollTo 获取 窗口      更新时间:2023-09-26

我知道这个问题可能被问了一千次并解决了,但我需要关于我的具体情况的建议。

我已经在我的网站上设置了几个锚点,我正在使用jquery在它们之间平滑滚动。我一直在使用#top锚点滚动到页面顶部,它可以工作。但是,问题是,如果我让按钮滚动到 #top 它将不会滚动到页面的绝对顶部(因为我无法在网页上将锚点设置得足够高)。

我试图让它使用 window.scrollTo(0, 0); 命令工作,但我不知道如何在仍然可以滚动到锚点的同时让它工作。

我使用以下jQuery进行锚点滚动:

$(document).ready(function(){
    $('a[href^="#"]').on('click',function (e) {
        e.preventDefault();
        var target = this.hash;
        var $target = $(target);
        $('html, body').stop().animate({
            'scrollTop': $target.offset().top
        }, 900, 'swing', function () {
            window.location.hash = target;
        });
    });
});

使用此 HTML:

<a href="#top">
    <img alt="" heigth="60" onmouseout="this.src='http://i.imgur.com/0JvWWER.png'" onmouseover="this.src='http://i.imgur.com/Ow7CVn0.png'" src="http://i.imgur.com/0JvWWER.png" width="60" />
</a>

现在,如何使window.scrollTo(0,0);工作以及如何在 html 正文中实现它?

提前谢谢。

正如这里所说的那样,在这里做一个小的改变:

$(document).ready(function(){
    $('a[href^="#"]').on('click',function (e) {
        e.preventDefault();
        var target = $(this).attr("href");
        $('html, body').stop().animate({
            // Change here...
            'scrollTop': ((target === '#top') ? 0 : $(target).offset().top)
        }, 900, 'swing', function () {
            window.location.hash = target;
        });
    });
});