0

scrollTopとscrollLeftを使わずに複数の要素にスクロールイベントを適用する方法はありますか? 最初の要素のスクロール ハンドラ内に $('#element2').scroll(event) を追加しようとしましたが、うまくいかないようです。

それ以外の場合、jQuery がスクロールバーを更新するために使用する生データを JavaScript スクロール イベントから取得し、これを手動で行うことは可能ですか?

私がこれをしたい理由は本質的に、iframeの高さをそのコンテンツに合わせて確実にサイズ設定する良い方法を見つけることができなかったためです(コンテンツに高さが指定されていない要素が含まれている場合、非常に奇妙なことがありました)。(または、誰かがこれを行うための信頼できる方法を知っていれば、それは素晴らしいことです)

つまり、いわば、iframe よりも大きい場合にスクロールできるコンテンツ ページを保持する iframe を保持する UI に「ビューポート」があります。iframe の高さをコンテンツのサイズに確実に合わせることができなかったため、iframe の高さをこのビューポートの高さに設定し、コンテンツを垂直にスクロールするように設定しましたが、iframe の幅をビューポートの幅に設定することはできません。そのコンテンツのhtmlがそれよりも大きい場合でも、コンテンツのcssで特定のメディアクエリをトリガーします。(iframeをだまして実際とは異なるサイズであると思わせることができれば、それも問題を解決します)

私の解決策は、iframeの幅をコンテンツの幅に設定し、フレームの周りにラッパーを配置し、ビューポートの幅に設定して、フレームをスクロールすることでした。ここでの問題は、iframe が垂直方向にのみスクロールし、ラッパーが水平方向にのみスクロールするため、スクロールが非常にぎくしゃくすることです (斜めにスクロールすると、上下にスクロールするか、突然横に動くことがあります)。これらのスクロール イベントを iframe からキャプチャし、それら (または少なくともその x コンポーネント) をラッパーに適用して、スクロールをスムーズにしたいと考えています。

これを行うために scrollLeft() を使用できない理由は、iframe の幅がコンテンツに合わせてサイズ設定され、垂直方向にのみスクロールするため、scrollLeft は常に 0 になるためです。

説明が長くなってすみません:/

前もって感謝します

4

1 に答える 1