ブラウザーがスクロールするときにブラウザーに追従し、別の div に含まれる div があります。
次の関数は、div を所定の位置に保持し、ユーザーがスクロールしたときに移動します。
$(function() {
var offset = $("#sidebar").offset();
var topPadding = 15;
$(window).scroll(function() {
if ($(window).scrollTop() > offset.top) {
$("#sidebar").stop().animate({
marginTop: $(window).scrollTop() - offset.top + topPadding
});
} else {
$("#sidebar").stop().animate({
marginTop: 0
});
};
});
});
ブラウザーの高さが 400px 未満の場合を除いて、これはかなりうまく機能し、バグが発生します。
そのため、ブラウザが >=400 の場合にのみ実行するように単純な行を含めることにしました。
if (window.innerHeight >= 400) {
$(function() {
var offset = $("#sidebar").offset();
var topPadding = 15;
$(window).scroll(function() {
if ($(window).scrollTop() > offset.top) {
$("#sidebar").stop().animate({
marginTop: $(window).scrollTop() - offset.top + topPadding
});
} else {
$("#sidebar").stop().animate({
marginTop: 0
});
};
});
});
}
これは、ブラウザの最初の高さが 400px を超えている限り、問題なく動作するようです。ブラウザー ウィンドウのサイズが最初の高さから変更された場合でも、コードは実行されますが、これは私が望んでいることとは逆です。
基本的に、ブラウザーのサイズを動的に追跡し、高さが 400px を超える場合にのみこのコードを実行し、400px 未満の場合は実行しない方法はありますか?
助けてくれてありがとう!