私が直面しているものに関連するここにあるすべてのものを調べましたが、まだ修正できません.
私がやろうとしていること:
- ユーザーがページを上下にスクロールすると、サイドバー ナビゲーションがフロートします。
- すべての要素を表示してクリックできるように、サイドバーを中央で停止させる。
私が得ているもの:
- サイドバーは下にスクロールすると問題なくスクロールしますが (集中ビュー)、上にスクロールすると、ページのスクロールが速すぎるとサイドバーの半分しか表示されません。
- ページを下にスクロールすると、サイドバーによってフッターがさらに下に押し出されます。
- ページを下から上にスクロールしても、サイドバーは元の位置にロックされません。少し隙間があるようです。
これがスクリプトです(寛大なJordon Mearsから改造されたものです):
<script type="text/javascript">
function animate_box() {
var offset = -15; /* set this to the starting margin-top in the css */
var element = document.getElementById('animate_box');
if(element) {
var top = Number(String(element.style.marginTop).substring(0,String(element.style.marginTop).indexOf('px')));
try {
if(document.body.scrollTop > 500) {
var difference = (document.body.scrollTop + offset);
} else if(document.documentElement.scrollTop > 0) {
var difference = (document.documentElement.scrollTop + offset);
} else {
var difference = offset;
}
} catch(e) {
var difference = offset;
}
difference = difference - top;
if(difference > 200) {
element.style.marginTop = (top + Math.abs(Math.ceil(difference / 30))) + 'px';
} else if(difference < 190) {
element.style.marginTop = (top - Math.abs(Math.ceil(difference / 30))) + 'px';
}
}
}
window.setInterval(animate_box, 50);
</script>