如何滚动并保持特定元素的位置?

时间:2015-11-30 23:28:30

标签: javascript jquery html css

这是我的代码



$('html, body').stop().animate({scrollTop:$('.select').offset().top-80}, '100'); 

div{
border: 2px solid gray;
  padding: 10px;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<div> div1 </div>

<br><br><br><br><br><br><br><br><br><br><br>

<div> div2 </div>

<br><br><br><br><br><br><br><br><br><br><br>

<div class='select'> div3 </div>

<br><br><br><br><br><br><br><br><br><br><br>

<div> div4 </div>

<br><br><br><br><br><br><br><br><br><br><br>

<div> div5 </div>
&#13;
&#13;
&#13;

它运作正常。我的问题只是跳跃。页面加载时,首先它(跳转)到页面顶部,然后滚动到该特定位置。怎么预防呢?我希望不要上升然后下去,我想如果当前滚动在那个特定的位置,那么没有任何反应。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

我认为您要求在页面加载时跳转到特定的<div> ...如果是这样的话,最简单的解决方案是使用特定的ID作为目标{ {1}},然后将<div>的ID附加到您用来链接到该文件的网址末尾。

因此,举例来说,如果你有<div>,那么你可以使用<div id='select'>直接链接到该div而不会产生滚动效果。

可以使用锚标记中的http://yourwebsite.com#select属性(例如href)直接对其他ID进行其他跳转。如果你想保持这些跳转的滚动效果(而不是像你在这里那样在页面加载时自动滚动),你需要使用JavaScript或jQuery将事件监听器附加到锚标签。

答案 1 :(得分:1)

当渲染文档(页面)时,默认情况下它总是将焦点放在页面的顶部,不幸的是,css不会单独提供任何技巧来设置它来克服它。

您可以做的最好的事情就是围绕它使用setTimeout函数并延迟转换,使其看起来更加线性。

setTimeout(function(){
$('html, body').stop().animate({scrollTop:$('.select').offset().top-80}, 3000); },2000);

以下是一个示例:http://jsfiddle.net/86829ryz/18/