Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery偏移量为%而不是px-可能吗?_Javascript_Jquery - Fatal编程技术网

Javascript Jquery偏移量为%而不是px-可能吗?

Javascript Jquery偏移量为%而不是px-可能吗?,javascript,jquery,Javascript,Jquery,我有这个脚本,我想让它做一个偏移15%的id顶部滚动到。我尝试过很多东西,所以我有点好奇你们会采取什么方法。由于我自己所有的尝试都失败了,我已经把它简化为有效的。希望有人能帮我 $('a[href*=#]').bind('click', function (e) { e.preventDefault(); var target = $(this).attr("href"); $('html, body').stop().animate({ sc

我有这个脚本,我想让它做一个偏移15%的id顶部滚动到。我尝试过很多东西,所以我有点好奇你们会采取什么方法。由于我自己所有的尝试都失败了,我已经把它简化为有效的。希望有人能帮我

$('a[href*=#]').bind('click', function (e) {
        e.preventDefault();

        var target = $(this).attr("href");

        $('html, body').stop().animate({ scrollTop: $(target).offset().top }, 800, function () {
            location.hash = target; 
        });

        return false;
    });

我在这里拉了把小提琴:

试试这样的东西

Math.round(parseInt($(target).offset().top) * 0.15)

我没有试过,但我想说,像这样的方法可以奏效:

$('a[href*=#]').bind('click', function (e) {
    e.preventDefault();

    var target = $(this).attr("href");

    var offset = $(target).offset().top - $(target).height * 0.15;

    $('html, body').stop().animate({ scrollTop: offset }, 800, function () {
        location.hash = target; 
    });

    return false;
});
这成功了

$('a[href*=#]').bind('click', function (e) {
        e.preventDefault();

        var target = $(this).attr("href");
        var parentDiv = $(this).parent(".wrap1");
        var offset = Math.round(parseInt($(target).offset().top) - (0.15 * parentDiv.height()));

        $('html, body').stop().animate({ scrollTop: offset }, 800, function () {
            //location.hash = target; 
        });

        return false;
    });

如果我删除location.hash=target,它会停止闪烁,但当我点击链接2、3等时,它开始计算错误。如果是,我已经更新了JSFIDLE,并将更新上面的答案。我几分钟前刚刚更新了相同的答案。顺便说一句,location.hash=target不应出现任何问题您没有设置parstInt函数的基数。文件: