2011-06-29 42 views
5

全部你好

我的意思是當鼠標移向窗口邊緣(x或y或兩者)時,我希望頁面滾動,當鼠標停止移動時,我希望頁面停止滾動。

有許多基於在窗口邊緣使用onClick事件或滾動區進行滾動的示例,但基於鼠標光標的移動並不多。當鼠標移動時的滾動窗口

任何幫助將不勝感激。

回答

5

網頁已經設計成使用滾動條,頁面/主頁/結束/箭頭鍵等進行滾動。是否有任何理由不足以滿足您的頁面?改變預期的功能通常不是一個好主意。

您可以在這裏閱讀mousemove活動。無論如何,下面的代碼應該工作,但我真的不建議使用它。對於敏感小鼠的人可能會特別迷失方向:

// Variables for current position 
var x, y; 

function handleMouse(e) { 
    // Verify that x and y already have some value 
    if (x && y) { 
    // Scroll window by difference between current and previous positions 
    window.scrollBy(e.clientX - x, e.clientY - y); 
    } 

    // Store current position 
    x = e.clientX; 
    y = e.clientY; 
} 

// Assign handleMouse to mouse movement events 
document.onmousemove = handleMouse; 
+0

完美..謝謝。是的,你是正確的改變預期的功能不是很好,但這個頁面類似於一個畫廊的牆壁,所以「看你指向哪裏」的功能是一個很好的效果。爲了減少「抖動」(並且可能會加上一些加速),最好的做法是增加某種緩解效果。這可能嗎? – kevin

+0

當然,你可以將'var diffX = e.clientX - x'存儲在一個變量中,然後檢查'if(Math.abs(diffX)> 1)'或其他東西,你可以將它除以2以使事情變得不那麼敏感等等。你真正需要知道的是'window.scrollBy'將通過提供的'x'和'y'參數來滾動窗口。 – brymck

+0

Bryan ....非常好。謝謝! – kevin

相關問題