私は現在、JavaScript でできることに関していくつかの厳しい制限の下で作業しています (たとえば、jQuery などのフレームワークはなく、Firefox 2.0 以降は何もありません)。
これが私の問題です。ページの上部に固定ヘッダーが表示されます。入力要素があちこちに散らばっています (背景画像を含め、紙のフォームを正確に複製しています)。ページの下部近くにフィールドがあり、(キーボードのタブ ボタンを使用して) タブ アウトされ、ページの上部にあるフィールドにフォーカスが置かれます。Firefox は、フィールドを自動的に「表示」にスクロールします。ただし、ブラウザはフィールドが表示されていると認識していますが、実際には永続ヘッダーの下に隠されています。
http://imageshack.us/a/img546/5561/scrollintoviewproblem.png
上の青いフィールドには、ページの別の場所から「タブ」を押すことでアクセスできます。ブラウザは、フィールドがスクロールされて表示されたと認識しますが、実際にはフローティング永続ヘッダーの下に隠されています。
私が探しているのは、フィールドがこのヘッダーの下にあることを検出し、それに応じてページ全体をスクロールする方法に関するアイデアです。
マージンとパディングのいくつかのバリエーションを試しました ( http://code.stephenmorley.org/javascript/detachable-navigation/#considerationsで他の考慮事項を参照してください)。また、フィールドにフォーカスするたびに JavaScript 関数「scrollIntoView(element)」を呼び出してみましたが、フォーム上のフィールドの量 (および紙の背景画像に一致するようにフィールドを配置しているという事実) を考慮してこれは、わずかに異なる高さの互いに近いフィールドをタブで移動するときに、かなり深刻な「ジャンプ」動作を引き起こしていました。
あまり労力を必要としない限り、永続ヘッダーの処理方法を変更できます。残念ながら、永続的なヘッダーからページ コンテンツを操作する必要があるため、フレームは問題外です。
理想的には解決策は CSS ですが、JavaScript で問題が解決する場合は JavaScript を使用します。
もう 1 つの注意点として、入力要素には背景色が必要です。つまり、入力要素にパディングを追加すると背景色が引き伸ばされ、背景画像の一部が非表示になります。しかし、入力要素は div にあるため、これを有利に使用できる可能性があります。