1

スクロール先の ID の 15% 上部のオフセットを作成するために、このスクリプトを用意しました。私は多くのことを試してきたので、皆さんがどのようなアプローチを取るのかちょっと興味があります. 私自身の試みはすべて失敗したため、機能するものにそれを取り除きました。誰かが私を助けてくれることを願っています。

$('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;
    });

私はここでフィドルを作りました: http://jsfiddle.net/77rFz/

4

3 に答える 3

0

これはうまくいきました!

$('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;
    });
于 2013-09-25T15:10:09.580 に答える
0

私はそれを試しませんでしたが、次のようなことがうまくいくと思います:

$('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;
});
于 2013-09-25T11:37:59.840 に答える
0

このようなことを試してください

Math.round(parseInt($(target).offset().top) * 0.15)
于 2013-09-25T11:04:08.163 に答える