Javascript 在垂直高度的50%处使用div停止固定位置滚动?
我一直在玩弄从中找到的答案。我的问题与此类似,只是我想让div向下滚动一段时间,页面应该垂直居中于窗口的左侧,而不是左上角。我尝试对JQuery进行以下修改:Javascript 在垂直高度的50%处使用div停止固定位置滚动?,javascript,jquery,css,Javascript,Jquery,Css,我一直在玩弄从中找到的答案。我的问题与此类似,只是我想让div向下滚动一段时间,页面应该垂直居中于窗口的左侧,而不是左上角。我尝试对JQuery进行以下修改: $.fn.followTo=函数(pos){ var$this=这个, $window=$(windw); $window.scroll(功能(e){ 如果($window.scrollTop()>pos){ $this.css({ 位置:'绝对', 顶部:pos }); }否则{ $this.css({ 位置:'固定', 最高:50%
$.fn.followTo=函数(pos){
var$this=这个,
$window=$(windw);
$window.scroll(功能(e){
如果($window.scrollTop()>pos){
$this.css({
位置:'绝对',
顶部:pos
});
}否则{
$this.css({
位置:'固定',
最高:50%
});
}
});
但是当我在else中设置top:50%时,滚动不会在指定的位置停止,而是沿着页面一直向下。这是我的完整修改
如何正确地修改此选项,以便将元素固定在垂直中间,但在某个点后停止?第一个问题是,您需要将
50%
放在引号中,运行时出现错误。第二个问题是,当您在点击2000
标记后将其设置为pos
时,它将被禁用mp不在视图中,因此您需要获取窗口高度并将其设置为pos+windowHeight/2
。这是您的更新代码
var windw = this;
$.fn.followTo = function ( pos ) {
var $this = this,
$window = $(window);
$window.scroll(function(e){
if ($window.scrollTop() > pos) {
$this.css({
position: 'absolute',
top: pos + ($(window).height() / 2)
});
} else {
$this.css({
position: 'fixed',
top: '50%'
});
}
});
};
$('#f').followTo(2000);
更新后的fiddle你能再解释一下吗?我希望在你滚动到某个点时跟随的div停止跟随
pos
,这是followTo
函数的一个参数。如果你查看原始的JSFIDLE,div将在你指定的任何位置停止跟随。但是在我的JSFIDLE中,它不会在n它传递位置。在原始版本中,如果scrolltop尚未点击pos
,它将top
设置为0,但在我的版本中,我将其设置为50%,以使其在窗口中垂直居中。您可以使用像素高度。