我现在已经研究了这个话题2天了,我无法想出如何解决它。该页面是响应式的,我想在加载时将页面滚动到某个元素。我使用此代码在桌面版上工作:
$('html,body').animate({scrollTop: $('.thank-you').offset().top - 80 });
80px是我需要从贴在顶部的菜单栏上减去的差异。
整个代码是这样的:
$(document).ready(function(){
if( $(window).width() <= 600 ){ //Mobile width
$('html,body').animate({scrollTop: $('.thank-you').offset().top - 260});
// $('.thank-you') is the the div that contains the thank you message
}else{
$('html,body').animate({scrollTop: $('.thank-you').offset().top - 80 });
}
});
现在我确实遇到了平板电脑和移动版本的问题 - 取决于视口的宽度我滚动的元素最终位于不同的级别 - 距离顶部300px到200px之间。现在我已经任意设置了260,但这给出了不同的结果,并不总是好的结果。 Here's the image that illustrates the problem.
第二个问题是如果页面在重新加载之前滚动到底部,则滚动从顶部开始到提到的元素,所以我们从底部到顶部然后到达指向页面中间,这没有任何意义。 我已经检查了我在堆栈上发现的所有可能的问题,我在网上查了很多解决方案(包括Chris Coyer Css提示和技巧网站)。通过element.height()方法获取元素的高度有一些奇怪的事情 - 它没有给出正确的答案 - 我遇到了Firebug节目的那些,而这些从来都不一样。所以使用简单的减法也不是答案。
我真的很感激有关如何处理此问题的任何建议。