Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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 粘性侧边栏滚动滞后和无限滚动_Javascript_Jquery_Sticky - Fatal编程技术网

Javascript 粘性侧边栏滚动滞后和无限滚动

Javascript 粘性侧边栏滚动滞后和无限滚动,javascript,jquery,sticky,Javascript,Jquery,Sticky,我有一个随页面向下滚动的侧边栏。然而,侧边栏似乎落后于页面的滚动,例如向下滚动,侧边栏在几秒钟后显示。此外,侧边栏将继续向下移动,使页面变长,并导致页脚无法访问。我需要做什么才能使侧边栏随滚动条一起移动,并使侧边栏在页脚处停止移动?以下是我的jQuery代码: $(function() { var $sidebar = $("aside"), $window = $(window),

我有一个随页面向下滚动的侧边栏。然而,侧边栏似乎落后于页面的滚动,例如向下滚动,侧边栏在几秒钟后显示。此外,侧边栏将继续向下移动,使页面变长,并导致页脚无法访问。我需要做什么才能使侧边栏随滚动条一起移动,并使侧边栏在页脚处停止移动?以下是我的jQuery代码:

            $(function() {

                var $sidebar   = $("aside"), 
                    $window    = $(window),
                    offset     = $sidebar.offset(),
                    topPadding = 50;

                $window.scroll(function() {
                    if ($window.scrollTop() > offset.top) {
                        $sidebar.stop().animate({
                            marginTop: $window.scrollTop() - offset.top + topPadding
                        });
                    } else {
                        $sidebar.stop().animate({
                            marginTop: 0
                        });
                    }
                });

            });

一个例子可以在上看到。修复代码是受欢迎的,但只要给我指出正确的方向就是最好的。

尝试用纯CSS解决它:

.affix {
  position: fixed;
}
或者,您可以使用现有的jQuery插件,如下所示:

我就是这样解决问题的:

            if ($(window).width() > 767) {

                var $sidebar   = $("aside"), 
                    $window    = $(window),
                    offset     = $sidebar.offset(),
                    topPadding = 50;

                $window.scroll(function() {
                    if($window.scrollTop() > $('h3').offset().top) {
                        $sidebar.stop().css('marginTop', '680px');              
                    } else if ($window.scrollTop() > offset.top) {
                        $sidebar.stop().animate({
                            marginTop: $window.scrollTop() - offset.top + topPadding
                        }, 100, function() {
                        });
                    } else {
                        $sidebar.stop().animate({
                            marginTop: 0
                        });
                    }
                });

            };

如果$window.width>767,则当视口宽度大于767px时,part会阻止侧栏滚动。如果$window.scrollTop>$'h3'.offset.top{$sidebar.stop.css'marginTop','680px';}部分用于视口顶部碰到所需元素h3时,滚动停止。该部分必须是第一部分,因为else if语句始终为真!然后我只是缩短了动画时间以停止延迟。

您考虑过使用引导吗?不是真的。我正在使用jQuery,已经有很多函数在使用它了。在你看来,Twitter Bootstrap的优势是什么?它是jQuery插件的集合,也是一个CSS框架。另一种选择是只使用CSS,我最初尝试过,但位置:固定;并不能将侧边栏保持在正确的水平位置。