固定ヘッダーのサイトを作成しました。これが1つの問題を引き起こすことを発見しました
- 誰かがページダウン/アップキーを押したとき、そのスクロールの長さが長すぎます
スクロールの長さからヘッダーの高さ(およびその下の非常に小さなパディング)を削除しないためです。そのため (たとえば)、ページの先頭で「ページダウン」を押した場合、コンテンツを見逃さないように、前に中断した場所に一致するように手動で少し上にスクロールする必要があります。
このJavaベースのページで、この問題の解決策と思われるものを見つけました
スクロール コントロール:
デモページでは十分に機能しました。しかし、私が何をしても(この種の初心者のスキルレベルを考えると)、自分のページを制御することはできません. 別の人にそれを見て提案をしてもらいましたが、誰も問題を解決しませんでした. 彼が行ったことの 1 つは、元の Javascript コードに対して「バー」のコンテンツを調整することでした。上記のリンクされた元のコードと比較するために、この改訂されたコードを以下に貼り付けました。
実際のコンテンツを含む私のページはまだホストされていません。友人が、一般的なコンテンツで作成した「ダミー」ページをホストしていますが、他のページと同じコードを使用しています (コンテンツを公開する準備が整っていません)。リンクは次のとおりです。
私はこれに完全に困惑しています。必要に応じてアーカイブを読むことから、ここでいくつかの素晴らしいアドバイスを見つけたので、誰かがこれを理解してくれることを願っています. さらに、自分の固定ヘッダー サイトでこれを修正したい人に役立つことを願っています。
前もって感謝します...
(function(){
var content, header
function adjustScroll(event) {
var e, key, remainingSpace;
content = content || document.getElementById('content');
header = header || document.getElementById('header');
e = event || window.event;
key = e.which || e.keyCode;
if ( key === 33 ) { // Page up
remainingSpace = content.scrollHeight - content.scrollTop;
setTimeout(function () {
content.scrollTop = (remainingSpace >= content.scrollHeight -
header.offsetHeight) ? 0 : (content.scrollTop + header.offsetHeight);
}, 10);
}
if ( key === 34 ) { // Page down
remainingSpace = content.scrollHeight - content.scrollTop -
content.offsetHeight;
setTimeout(function () {
content.scrollTop = (remainingSpace <= header.offsetHeight) ?
content.scrollHeight : (content.scrollTop - header.offsetHeight);
}, 10);
}
}
document.onkeydown = adjustScroll;
}());