2010-07-15 35 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