0

私は多くの小さなスクロール可能なdiv(実際にはAceエディター)のグリッドを持つWebアプリを構築していますが、このグリッドにはウィンドウよりも大きい十分な要素があります。ユーザーが空のスペースをスクロールし始めたら、ウィンドウ自体をスクロールさせたいと思います。ユーザーがグリッド要素内でスクロールを開始したときに、そこでdivの内容をスクロールしてもらいたいと思います。つまり、ユーザーが空のスペースをスクロールし始めてから、マウスがグリッド要素上を移動するようにスクロールすると、スクロール可能なdivがすべてのスクロールイベントをキャプチャし、グリッド上のユーザーのフローを中断して、グリッド内に「トラップ」します。エレメント。

AFAIKには垂直方向とは別に水平方向のマウスホイールの動きをキャプチャする方法がないため、イベントを手動でキャプチャすることはできませんonmousewheel。MacOSXのユーザーがすべての方向にスクロールできるようにしたいです。JSを使用して、最初のイベントに非常に高いz-indexを持つ非表示のdivを追加し、イベントが一定期間トリガーされなくなっonscrollたらすぐに削除することを考えました。onscrollこれはまだコーディングしていませんが、もっと良い解決策があるのか​​、それとも私が考えていなかった潜在的な落とし穴があるのか​​疑問に思っています。どんな助けやアドバイスも素晴らしいでしょう!ありがとう!

4

1 に答える 1

0

これに対する解決策は、ブラウザのサポートのために非常に難しいと思います。実際の解決策は、おそらくスクロールの計算、divのバックトラック、ページへのスクロールの適用などです。

あなたはこのようなことをすることができます:

$('div').scroll(function(e){
    // figure out how much it has scrolled
    window.scrollBy(0,howmuch);
});

ただし、このソリューションを少しでもお勧めしません。より良いオプションは、divをoverflow:hiddenに設定することだと思います。ソリッドスクロールプラグインを選択し、それを使用してdivのスクロール動作をカスタマイズします。

于 2011-07-14T02:29:35.787 に答える