Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在垂直高度的50%处使用div停止固定位置滚动?_Javascript_Jquery_Css - Fatal编程技术网

Javascript 在垂直高度的50%处使用div停止固定位置滚动?

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%

我一直在玩弄从中找到的答案。我的问题与此类似,只是我想让div向下滚动一段时间,页面应该垂直居中于窗口的左侧,而不是左上角。我尝试对JQuery进行以下修改:

$.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%,以使其在窗口中垂直居中。您可以使用像素高度。