Javascript 如何防止在前置页上滚动?

Javascript 如何防止在前置页上滚动?,javascript,jquery-ui,jquery-plugins,jquery,Javascript,Jquery Ui,Jquery Plugins,Jquery,我准备把内容放在身体顶部。有时,这些内容可能有400-500px高,当添加类似的内容时,在阅读页面时将内容向下推,这可能会非常烦人 我希望项目是自动前置,而不是像点击这里看到新的项目 有没有办法在不移动页面的情况下将此内容预先添加到正文顶部?然后,当用户滚动到顶部时,它已经在那里了?我以前做过这样的操作,即预先设置元素,然后计算它们的总外亮度,并将scrolltop设置为该值。大概是这样的: var $current_top_element = $('body').children().firs

我准备把内容放在身体顶部。有时,这些内容可能有400-500px高,当添加类似的内容时,在阅读页面时将内容向下推,这可能会非常烦人

我希望项目是自动前置,而不是像点击这里看到新的项目


有没有办法在不移动页面的情况下将此内容预先添加到正文顶部?然后,当用户滚动到顶部时,它已经在那里了?

我以前做过这样的操作,即预先设置元素,然后计算它们的总外亮度,并将scrolltop设置为该值。大概是这样的:

var $current_top_element = $('body').children().first();
$('body').prepend(other_elements);

var previous_height = 0;
$current_top_element.prevAll().each(function() {
  previous_height += $(this).outerHeight();
});

$('body').scrollTop(previous_height);

希望这为您指明了正确的方向。

我采取了一种稍微不同的方法:

首先获取body的第一个元素(或者另一个元素,如果您假装是body以外的元素,这是我所需要的),然后在预先准备好新的元素集之后,使用偏移量(如果需要相对于body滚动)或位置(如果需要相对于祖先元素滚动)对原始第一个元素执行函数,以获取其更新的坐标并滚动到该点

比如:

var current_top_element = $('body').children().first();
$('body').prepend(other_elements);

$('body').scrollTop(current_top_element.offset().top);
或用于除正文滚动以外的其他内容:

var current_top_element = $('#ul-element-id li:first'); //example with a list
$('#ul-element-id').prepend(other_elements);

$('#ul-element-id').scrollTop(current_top_element.position().top);
请注意position()返回元素相对于其偏移父元素的位置,因此请确保根据需要设置父元素的css position属性()

有关更多详细信息,请参阅:

我认为最通用的方法是在修改文档前后测量文档高度:

var old_height = $(document).height();  //store document height before modifications
var old_scroll = $(window).scrollTop(); //remember the scroll position

//do anything
$("p:first").prepend( "<p>I just became first</p>" );

$(document).scrollTop(old_scroll + $(document).height() - old_height); //restore "scroll position"
var old_height=$(document.height()//修改前存储文档高度
var old_scroll=$(window.scrollTop()//记住滚动的位置
//做任何事
$(“p:first”).prepend(我刚刚成为第一名);
$(文档).scrollTop(旧卷+$(文档).height()-旧卷高度)//恢复“滚动位置”

这样你就可以做任何事情,而不会让窗口离开你正在阅读的内容:)

我知道,这个话题我已经很晚了。很抱歉取消了它的链接,但我发现了一种非常简单的方法,可以防止在将元素添加到正文之前滚动到顶部

当滚动Y位置为零时,自动滚动会追加。只需这样做:

element.scrollTo(0, 1);

并且您的元素不会在预结束后自动转到顶部

到目前为止,我最幸运的是采用了这种方法。在搜索了整个互联网并尝试了各种解决方案之后,这是迄今为止我发现的唯一一种适用于我的用例的解决方案。很棒的解决方案!如果div的属性为overflow-y:scroll,请在jQ-中使用.scrollHeight()-或.prop(“scrollHeight”)而不是.height()。我已经尝试了所有三种答案。这是最好的解决方案。你的意思是
滚动顶
?“这里应该使用什么元素?”亚历克斯,我想他是说