jQuery轻柔滚动

jQuery轻柔滚动,jquery,jquery-ui,scroll,Jquery,Jquery Ui,Scroll,由于我网站的性质,我经常不得不链接到页面中列出的锚,而不仅仅是页面本身。可以在此处找到一个示例: 我要找的是一些jQuery代码,我可以使用它使页面慢慢向下滚动到锚定位置,而不是直接跳转到锚定位置 有人能帮我吗?谢谢。假设您的html是: <a href="#someid">click me</a> <h1 id="someid">some heading<h1> 编辑:利亚姆说的话(见下面的评论)这是我不久前整理的东西 $('a', t

由于我网站的性质,我经常不得不链接到页面中列出的锚,而不仅仅是页面本身。可以在此处找到一个示例:

我要找的是一些jQuery代码,我可以使用它使页面慢慢向下滚动到锚定位置,而不是直接跳转到锚定位置

有人能帮我吗?谢谢。

假设您的html是:

<a href="#someid">click me</a>
<h1 id="someid">some heading<h1>

编辑:利亚姆说的话(见下面的评论)这是我不久前整理的东西

    $('a', this)
    .each(function(e) {
        var url = $(this).attr('href').replace(/^\s/, '').replace(/\s$/, '');
        var parts = url.split("#", 2);
        var anchors = $("#" + parts[1] + ", a[name='" + parts[1] + "']");
        if (anchors.length > 0) {
            $(this).click(function(evt) {
                evt.preventDefault();
                $('html, body')
                .animate({
                    scrollTop: $(anchors.get(0)).offset().top
                }, {
                    duration: 1500,
                    specialEasing: {
                        scrollTop: 'easeOutQuint'
                    }
                });
            });
        }
    });

如果我再次编辑此内容,我将使用$('a[href^=“#“]”)liam的选择器替换我的锚筛选。

谢谢您的回答,但它无法正常工作。对于链接和锚点位于同一页面上的页面,它可以正常工作,但它会阻止所有链接工作。另一点需要注意的是,大多数情况下,指向锚的链接将来自另一个页面,因此它需要能够从url获取#。谢谢。对于第一部分,在链接中添加一个类,将其表示为“同一页面”,然后使用
$('a.myclass')
作为选择器。至于第二部分,我不会那么做。听起来像是糟糕的使用性使用
$('a[href^=“#“]”)
只选择指向页面上锚的链接。
    $('a', this)
    .each(function(e) {
        var url = $(this).attr('href').replace(/^\s/, '').replace(/\s$/, '');
        var parts = url.split("#", 2);
        var anchors = $("#" + parts[1] + ", a[name='" + parts[1] + "']");
        if (anchors.length > 0) {
            $(this).click(function(evt) {
                evt.preventDefault();
                $('html, body')
                .animate({
                    scrollTop: $(anchors.get(0)).offset().top
                }, {
                    duration: 1500,
                    specialEasing: {
                        scrollTop: 'easeOutQuint'
                    }
                });
            });
        }
    });