2012-03-15 40 views
3

考慮以下幾點:CSS解決方案只使用鼠標滾輪滾動當前div - 不是它背後的div。

Scrolling Div's

考慮在那裏我有我的鼠標定位在場景DIV一個,我使用鼠標滾輪滾動到DIVA的底部或頂部。當我到達div A的底部並保持滾動滾動時,它將開始滾動div B。我希望鼠標滾輪只滾動光標所在的當前div。

這是可能的任何標準的CSS?或者我需要連接JS/jQuery事件來檢測我目前正在使用的div並停止滾動事件?我希望有一個CSS解決方案。

在此先感謝您的幫助!

+0

IIRC,大多數瀏覽器在默認情況下做到這一點。 – Bojangles 2012-03-15 14:00:05

回答

0

這似乎不可能。如果有人發帖,我會很樂意接受另一個答案!

0

它看起來這是你所需要的:

How to programmatically disable page scrolling with jQuery

基本上鼠標懸停你會禁止設置溢出隱藏滾動的頁面的其餘部分。然後在mouseout上撤消它。

編輯:確保處理mouseout,alt + tab然後mousemove的情況。你可能需要調整它,以確保它們不會被開箱即用的鼠標滾動鎖定。

+0

他問了一個CSS解決方案! – vireshas 2012-03-15 14:12:27

+0

糟糕,這就是我在早上嘗試閱讀第一件事時所得到的,對不起。儘管如此,任何使用表達式的CSS解決方案都會避免性能。 – jholloman 2012-03-15 14:23:02

+0

謝謝@jholloman - 我可能需要改變JavaScript。 – MattW 2012-03-16 13:51:46

0

你需要這個,NO CSS解決方案:

<script> 
$("#div-A").bind("mousewheel", function(e){ 
var intElemScrollHeight = document.getElementById("div-A").scrollHeight; 
var intElemClientHeight = document.getElementById("div-A").clientHeight; 
if(intElemScrollHeight - $("#div-A").scrollTop() === intElemClientHeight) { 
    $(document).bind("mousewheel", function(event) { 
     event.preventDefault(); 
    }); 
} 
if(e.originalEvent.wheelDelta /120 > 0) { 
    if($("#div-A").scrollTop() != 0) { 
     $(document).unbind("mousewheel"); 
    } else { 
     event.preventDefault(); 
    } 
}}); 
$("#div-A").on("mouseleave", function(event) { 
    $(document).unbind("mousewheel"); 
}); 
</script>