私は次のコードを持っています。特定のポイントまでスクロールした後、検索結果ページのフィルターバーをウィンドウの固定位置に設定します。
var docked;
var filters = document.getElementById('filters');
var init = filters.offsetTop;
function scrollTop() {
return document.body.scrollTop || document.documentElement.scrollTop;
}
window.onscroll = function () {
if (!docked && (init - scrollTop() < 0)) {
filters.style.top = 0;
filters.style.position = 'fixed';
filters.className = 'docked';
docked = true;
} else if (docked && scrollTop() <= init) {
filters.style.position = 'absolute';
filters.style.top = init + 'px';
filters.className = filters.className.replace('docked', '');
docked = false;
}
}
私の問題は(そしてそれはもっと好奇心です)-このコードを私のファイルの一番上()に置くと<head>
、それはまったく機能しません。フィルタセクションは、ウィンドウとともにスクロールしません。ただし、このコードをファイルの下部(終了</body>
タグのすぐ上)に配置すると、問題なく機能します。
どうしてこれなの?これは、コードの動作方法と関係がありますか?それとも、これを引き起こしているのは、ファイルの残りの部分の癖やバグでしょうか?