1

私は大きな問題を抱えているか、小さな問題を抱えています。Web サイトをスクロールしようとしているので、各コンテナーが Web サイトの上部の特定の位置にスライドします。しかし、私が見る限り、問題があります。最初のアイテムをクリックしてから次のアイテムをクリックすると、スクリプトは同じ位置にスクロールしますが、前にクリックしたアイテムの上のアイテムをクリックすると、ページの下。

このための私のスクリプトは単純なアンカー スクリプトです。

$("a.scrollForMe").each(function() {   // go through all links
var href = $(this).attr("href");
if (typeof(href) == "undefined") { return; }
if ($(this).attr("href").match(/^#/)) {   // if href starts with #
    $(this).click(function() {  // add a click event to it
        var name = $(this).attr("href").substring(1);  // get the anchor link

        // on click, scroll to the a with a name attribute matching the anchor
        $('html, body').animate({scrollTop: $("section[name='" + name + "']").offset().top - 420}, 1000);

        //alert ("This height is: " + $("section[name='" + name + "']").height() + " and it's name is " + name);
    });
}
});

現在どのように機能しているかを確認したい場合は、私のウェブサイトをご覧ください: http://1st-issue.de/2012/redaxo/#sec10

あなたが私を助けてくれることを願っています!前もって感謝します!

4

1 に答える 1

0

おそらく、このコードを使用すると、より良くなるでしょう。保存ページでテストしました。

$(document).ready(function() {
  $("a.scrollForMe").each(function() {   // go through all links
    var href = $(this).attr("href");
    if (typeof(href) == "undefined") { return; }
    if (href.match(/^#/)) {   // if href starts with #
      $(this).click(function() {  // add a click event to it
        var name = href.substring(1);  // get the anchor link

        // on click, scroll to the a with a name attribute matching the anchor
        $('html, body').animate({scrollTop: $("section[name='" + name + "']").prevAll("section").first().offset().top + 100 }, 1000);

        //alert ("This height is: " + $("section[name='" + name + "']").height() + " and it's name is " + name);
      });
    }
  });
});

アドバイスできるとしたら、画面が自動的にアンカーにジャンプするため、href を使用してアンカーするべきではありません。追加したコード コードでは、ブラウザーが対応するアンカーに移動し、scrollTop アニメーションを実行した後に画面が点滅します。しかし、それは単なるアドバイスです。

于 2012-09-14T09:53:19.630 に答える