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