2010-07-15 50 views
10

如果我有一個固定的高度和寬度的div,我使用keypress(或keydown/keyup)移動。我可以讓窗口「跟隨」該div嗎?jQuery - 如果我用鍵盤移動div

我知道你可以自動滾動一個頁面,但你可以得到一個div的座標,並隨着div的移動而滾動頁面嗎?

+0

你見過http://flesler.blogspot.com/2007/10/jqueryscrollto.html嗎? – Adam 2010-07-15 20:20:58

+0

啊,不,我沒有 - 我有點想自己編寫它,而不是使用插件。 – 2010-07-15 20:22:01

+0

你可以放棄對IE6的支持嗎? :) – Anurag 2010-07-15 20:25:36

回答

1

你使用的是JavaScript框架嗎?如果你使用jQuery,你可以使用得到div的位置:

jQuery('#yourdiv').position().top() 
jQuery('#yourdiv').position().left() 

另外,如果你使用jQuery,窗口會自動滾動到與您沒有進一步的工作,保持股利鑑於反正。

在回答您的評論:

您可以使用jQuery( '主體'),動畫({scrollTop的:xPosOfDiv});

+0

啊,非常好 - 會有一種方法將頁面滾動到那個位置?我懷疑它實際上是.scroll()... – 2010-07-15 20:21:22

+1

沒有冒犯,但標題和標籤說明他使用JQuery。 ;) – Bobby 2010-07-15 20:21:31

+0

沒關係 - 知道了!乾杯! - 我在6分鐘內接受 – 2010-07-15 20:23:36

0
var pos = $("#theDiv").position(); 
window.scrollTo(pos.left, pos.top); 
+0

請注意'scrollTo'需要scrollTo插件:http://plugins.jquery.com/project/ScrollTo – kingjeffrey 2010-07-15 21:03:10

+1

@kingjeffey不,我沒有使用任何插件。我使用的是本地Javascript方法:https://developer.mozilla.org/en/DOM/window.scrollTo – 2010-07-15 22:34:27

1

方式一:

$(document.body).bind('keydown', function(){ 
    $('#somediv')[0].scrollIntoView(true); 
}); 

另一種方式:

$(document.body).bind('keydown', function(){ 
    $('#somediv').css('top', $(window).scrollTop() + 'px'); 
}); 

一路暢通:

$(document.body).bind('keydown', function(){ 
    $('#somediv').animate({'top': $(window).scrollTop() + 'px'}, 1000); 
}); 
+0

也會提出這個建議 - 唯一需要注意的是IE6/7渲染器有時會被混淆'scrollIntoView'並打破布局。然而,它絕對可以在大部分時間內運行。 – Pointy 2010-07-15 20:29:44