Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.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 元素按Jquery滚动移动_Javascript_Jquery_Scroll - Fatal编程技术网

Javascript 元素按Jquery滚动移动

Javascript 元素按Jquery滚动移动,javascript,jquery,scroll,Javascript,Jquery,Scroll,通过滚动事件移动元素位置时出现问题。问题是: 我向上滚动页面,并将1px附加到css顶部值(每个滚动)。在此之后,我将页面向下滚动,并从css顶部值中删除1px。我想它会回到原来的位置,但不会。这是我的密码: var lastScroll = $(window).scrollTop(); $(window).scroll(function(env) { var scroll = $(this).scrollTop(); if (scroll > lastScroll){

通过滚动事件移动元素位置时出现问题。问题是: 我向上滚动页面,并将1px附加到css顶部值(每个滚动)。在此之后,我将页面向下滚动,并从css顶部值中删除1px。我想它会回到原来的位置,但不会。这是我的密码:

var lastScroll = $(window).scrollTop();

$(window).scroll(function(env) {

 var scroll = $(this).scrollTop();

 if (scroll > lastScroll){
    console.log('Scroll down');
    $('#home>article').css({ 
      top: "+="+1+"px"
    });                                                 
 } else {
   console.log('Scroll up');
   $('#home>article').css({
      top: "-="+1+"px"
 });

lastScroll = scroll;

});

谢谢你的建议

当启动scroll事件时,不能保证每滚动一个像素就启动一次。它可能会在您一次滚动10像素,下一次滚动2像素后触发。您必须从上次调用处理程序开始跟踪scrollTop增量(更改)。

当scroll事件触发时,不能保证每滚动一个像素触发一次。它可能会在您一次滚动10像素,下一次滚动2像素后触发。您必须跟踪上次调用处理程序时的scrollTop增量(更改)。

希望这可能会有所帮助,这是我刚才使用的。 我一直在使用的:

<script type="text/javascript">// <![CDATA[
$(window).scroll(function () {
            var ttop = $('.container').position().top;
            var hcltb = $('.container').height();
            var mtop = $(window).scrollTop();
            if (mtop > ttop) {
                if (mtop < (ttop + hcltb - 400)) {
                    $('.internal_prev').css('top', (mtop - ttop + 300));
                    $('.internal_next').css('top', (mtop - ttop + 300));
                    $('.internal_commands').css('top', (mtop - ttop + 300));
                }
            }
        });
// ]]></script>
//ttop){
如果(mtop<(ttop+hcltb-400)){
$('internal_prev').css('top',(mtop-ttop+300));
$('internal_next').css('top',(mtop-ttop+300));
$('.internal_commands').css('top',(mtop-ttop+300));
}
}
});
// ]]>
这将导致div class=“container”充当主容器。 然后,它将导致内部类在div内上下滚动,内部填充设置为400


它并不完美,但给你。

希望这会有所帮助,这是我刚才用过的东西。 我一直在使用的:

<script type="text/javascript">// <![CDATA[
$(window).scroll(function () {
            var ttop = $('.container').position().top;
            var hcltb = $('.container').height();
            var mtop = $(window).scrollTop();
            if (mtop > ttop) {
                if (mtop < (ttop + hcltb - 400)) {
                    $('.internal_prev').css('top', (mtop - ttop + 300));
                    $('.internal_next').css('top', (mtop - ttop + 300));
                    $('.internal_commands').css('top', (mtop - ttop + 300));
                }
            }
        });
// ]]></script>
//ttop){
如果(mtop<(ttop+hcltb-400)){
$('internal_prev').css('top',(mtop-ttop+300));
$('internal_next').css('top',(mtop-ttop+300));
$('.internal_commands').css('top',(mtop-ttop+300));
}
}
});
// ]]>
这将导致div class=“container”充当主容器。 然后,它将导致内部类在div内上下滚动,内部填充设置为400


它并不完美,但你可以试试。

如果你想开发这样的东西,我可以推荐你skrollr:如果你想开发这样的东西,我可以推荐你skrollr: