訪問者がウェブサイトを下にスクロールすると下に移動するスクロール サイドバー div があります。問題は、下までスクロールしないことです。その理由がわかりました。
コードが読み込まれるとすぐにスクリプトがドキュメントの高さを計算すると仮定しますが、ウェブサイトには、計算が完了するとまだ読み込まれていないさまざまなサイズの画像があり、メインの画像も別の画像に変更するサムネイルも含まれます。クリックしたサイズ。
各画像の高さを設定すると、正しくスクロールされますが、実際の Web サイトで動的に生成される画像サイズを知ることはできません。
すべての画像が読み込まれた後、スクリプトがドキュメントの高さを計算する方法はありますか? それともうまくいく何か他のもの?
コードは次のとおりです。
var documentHeight = 0;
var topPadding = 15;
$(function() {
var offset = $("#sidebar").offset();
documentHeight = $("#maincontainer").height();
$(window).scroll(function() {
var sideBarHeight = $("#sidebar").height();
if ($(window).scrollTop() > offset.top) {
var newPosition = ($(window).scrollTop() - offset.top) + topPadding;
var maxPosition = documentHeight - (sideBarHeight + 0);
if (newPosition > maxPosition) {
newPosition = maxPosition;
}
$("#sidebar").stop().animate({
marginTop: newPosition
});
} else {
$("#sidebar").stop().animate({
marginTop: 0
});
};
});
});