jQuery:向scrollTop添加额外的像素

用户点击其href以“#”开头的链接时,我正在使用以下代码来平滑移动
$(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
        },900,'swing',function () {
            window.location.hash = target;
        });
    });
});

我需要在scrollTop值上添加大约40px,因此停止点可以覆盖内容.我将代码修改为此,但它似乎没有这样做(注意代码的末尾40):

$(document).ready(function(){
    $('a[href^="#"]').on('click',body').stop().animate({
            'scrollTop': $target.offset().top + 40
        },function () {
            window.location.hash = target;
        });
    });
});

解决方法

实际上你想成为-40的40偏移是不起作用的,因为一旦动画完成,浏览器正在做它的默认反应是转到你传递给window.location.hash的id的元素

您可以删除该行,也可以将以下css添加到要滚动到的元素中.

padding-top: 40px;
margin-top: -40px;

FIDDLE

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...