滚动到具有不同偏移的锚点

时间:2014-07-02 14:59:43

标签: javascript

我的网站顶部有一个浮动导航栏,我使用以下代码滚动到各个div锚点。

<script type="text/javascript">
$(document).ready(function () {
$('a[href^="#"]').on('click', function (e) {
    e.preventDefault();

    var target = this.hash,
        $target = $(target);

    $('html, body').stop().animate({
        'scrollTop': $target.offset().top - 100 // floatnav height
    }, 900, 'swing', function () {
        window.location.hash = '1' + target;
    });
});
});
</script>

我希望能够根据锚点使偏移量不同。其中一些是完整的页面图像,不需要偏移,因为导航栏后面没有真正丢失,而有些则以文本开头,因此导航栏需要位于它们上方,以便它不会隐藏内容。

1 个答案:

答案 0 :(得分:0)

您可以在目标锚点的属性中存储每个部分的偏移量,例如:

<a name="example" data-offset="100">Example</a>

然后,您可以在点击处理程序中访问此属性,如下所示:

var offset = $(target).attr('data-offset')

然后你需要做的就是从元素的偏移量中减去额外的偏移量。