オーバーフローのある要素でスクロールイベントをキャッチする方法についての洞察はありますか?私は、ユーザーにスクロールバーを表示せずに列をスクロールしたいと思います。オーバーフロー時のスクロールイベント:非表示要素
24
A
答えて
23
これは実際には多少のプロセスです。私がしているのは、ユーザーのマウスがスクロールしたい要素に入ったり出たりしたときにグローバルフラグを設定することです。次に、ボディのマウスホイールイベントで、MOUSE_OVERフラグがtrueであるかどうかを確認し、イベントの伝播を停止します。これは、ページ全体がオーバーフローした場合に本体がスクロールしないようにするためです。
オーバーフローを隠すと、デフォルトのスクロール機能が失われるため、自分で作成する必要があります。これを行うには、対象のdivにマウスホイールリスナーを設定し、event.wheelDeltaプロパティを使用して、ユーザーがスクロールしているかどうかを確認します。この値はブラウザによって異なりますが、スクロールダウンの場合は通常負で、スクロールアップの場合はプラスです。それに応じてdivの位置を変更することができます。
私にとって
var MOUSE_OVER = false;
$('body').bind('mousewheel', function(e){
if(MOUSE_OVER){
if(e.preventDefault) { e.preventDefault(); }
e.returnValue = false;
return false;
}
});
$('#myDiv').mouseenter(function(){ MOUSE_OVER=true; });
$('#myDiv').mouseleave(function(){ MOUSE_OVER=false; });
$('#myDiv').bind('mousewheel', function(e){
var delta = e.wheelDelta;
if(delta > 0){
//go up
}
else{
//go down
}
});
1
私はoverflow:scrollを使用しますが、スクロールバーを非表示にするためにdivを絶対配置してください。
1
$("body").css("overflow", "hidden")
$(document).bind('mousewheel', function(evt) {
var delta = evt.originalEvent.wheelDelta
console.log(delta)
})
作品...このコードはすぐにハッキングされていますが、基本的に次のようになります。 How do I get the wheelDelta property?
0
$("div").on('wheel', function (e) {
if (e.originalEvent.deltaY < 0) {
console.log("Scroll up");
} else {
console.log("Scroll down");
}
});
これは私のためのトリックでした。 JSFiddle
StackFiddle:
$("div").on('wheel', function(e) {
if (e.originalEvent.deltaY < 0) {
console.log("Scroll up");
} else {
console.log("Scroll down");
}
});
div {
height: 50px;
width: 300px;
background-color: black;
overflow: hidden;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div></div>
関連する問題
- 1. オーバーフローのある要素のスクロールイベントをキャプチャ:JavaScriptを使用
- 2. 非表示要素
- 3. D3のマウスクリック時に要素を表示/非表示
- 4. 要素グループの非表示と表示
- 5. HTML、CSS、Javascript - 非表示/表示要素
- 6. 表示/非表示DOM要素
- 7. Jquery div要素非表示
- 8. インラインdivと非表示オーバーフロー
- 9. jsp要素を他の要素に基づいて非表示/非表示
- 10. mouseleave 2要素表示/非表示1要素?
- 11. 要素の非表示と非表示JavaScript/HTML
- 12. オーバーフローしますか:非表示にしてブロックレベル要素にしますか?
- 13. ファイルのアップロード時にスパン要素を非表示にする
- 14. オーバーフロー時のリアクションキャッチホイールイベント:隠し要素?
- 15. マウスの移動時に要素を表示/非表示にする
- 16. jQueryの検証:デフォルトの要素以外のカスタム要素の表示/非表示
- 17. Jquery UI - 表示から1つの要素を取り出す:ドラッグ時に非表示要素
- 18. jquery - 要素を表示/非表示+各要素の時間を個別に制御する
- 19. 次の要素のクラスに応じて要素を表示/非表示する
- 20. jQuery innerWidth in Chromeの非表示要素
- 21. Selenium Webdriver - 非表示の要素をクリック
- 22. TYPO3:非表示要素の状態
- 23. 非表示HTMLフォーム要素にidの
- 24. 選択変更時にフォーム要素を非表示にする
- 25. クリック時に親要素を非表示にする
- 26. 一時的に要素を非表示にする
- 27. オーバーフロー:HTML5のために非表示ビデオ
- 28. スタイルのオーバーフロー:非表示とSVG Firefox 3.6
- 29. オーバーフローの設定:正しく非表示
- 30. 他の要素のホバー上の要素を非表示
これは完璧です。どうもありがとうございました! :) –
私は言及しませんでしたが、あなたは事を微調整するために 'event.wheelDelta'と' event.detail'を調べるべきです。 Firefoxは 'event.detail'を使用し、他のものは' event.wheelDelta'を使用し、これらの値を使用すると、その複合体に行きたい場合には速度制御を知ることができます。このリンクはhttp://www.javascriptkit.com/javatutors/onmousewheel.shtmlに役立ちます – anson
マウスホイールイベントはもう機能しません。現代のブラウザではホイールと呼ばれています。 – netAction