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