滚动回到div的顶部

imh*_*ere 97 html javascript scroll

<div id="containerDiv"></div>
Run Code Online (Sandbox Code Playgroud)
#containerDiv {
  position: absolute;
  top: 0px;
  width: 400px;
  height: 100%;
  padding: 5px;
  font-size: .875em;
  overflow-y: scroll;
}
Run Code Online (Sandbox Code Playgroud)
document.getElementById("containerDiv").innerHTML = variableLongText;
Run Code Online (Sandbox Code Playgroud)

如何在下次将滚动位置重置回容器div的顶部?

Phr*_*ogz 164

var myDiv = document.getElementById('containerDiv');
myDiv.innerHTML = variableLongText;
myDiv.scrollTop = 0;
Run Code Online (Sandbox Code Playgroud)

查看scrollTop属性.

  • 不需要 jQuery: document.getElementById('my_element_id_to_scroll').scrollTo(0,0); (3认同)
  • @ s12345您最好制作一个可重现的测试用例,向我们展示您的问题(例如,在http://jsfiddle.net上),并说说您正在使用哪种OS /浏览器/版本。 (2认同)
  • 对不起,我的错..奏效!与两个类似的div混淆了。 (2认同)

Mah*_*him 61

使用平滑动画执行此操作的另一种方法是这样的

$("#containerDiv").animate({ scrollTop: 0 }, "fast");
Run Code Online (Sandbox Code Playgroud)

  • 效果很好,但**请**不要使用`慢',它是如此......慢! (7认同)
  • 把它改成快:) (2认同)
  • 最佳答案!谢谢! (2认同)

Sun*_*ons 23

我尝试了这个问题的现有答案,但没有一个在我的Chrome上工作.做的工作略有不同:

$('body, html, #containerDiv').scrollTop(0);
Run Code Online (Sandbox Code Playgroud)

  • 这是 jQuery 的事情吗?因为我得到“scrollTop 不是一个函数”。 (2认同)

小智 17

scrollTo

window.scrollTo(0, 0);
Run Code Online (Sandbox Code Playgroud)

是将窗口滚动到顶部的最终解决方案 - 最好的部分是它不需要任何id选择器,即使我们使用IFRAME结构它也能很好地工作.

scrollTo()方法将文档滚动到指定的坐标.
window.scrollTo(xpos,ypos);
需要xpos数量.要沿x轴(水平)滚动到的坐标,以像素为单位
ypos Number必需.要沿y轴(垂直)滚动到的坐标,以像素为单位

jQuery的

另一个做同样的选择是使用jQuery,它会给出更平滑的外观

$('html,body').animate({scrollTop: 0}, 100);
Run Code Online (Sandbox Code Playgroud)

其中,在scrollTop之后的0指定像素中的垂直滚动条位置,第二个参数是一个可选参数,它显示完成任务的时间(以微秒为单位).

  • 如果我们只想将内部 div 滚动到顶部怎么办?这最终是行不通的。 (4认同)
  • 元素也有 .scrollTo 方法,你可以执行 `document.getElementById('scroller').scrollTo(0,0)` (2认同)

Jak*_*uda 9

2020 更新

您可以使用.scroll()轻松滚动元素或窗口。它有一个内置的平滑滚动效果,所以基本上代码再简单不过了。

标准属性:

var options = {
    top:       0,        // Number of pixels along the Y axis to scroll the window or element
    left:      0,        // Number of pixels along the X axis to scroll the window or element.
    behavior:  'smooth'  // ('smooth'|'auto') - animate smoothly, or move in a single jump
}
Run Code Online (Sandbox Code Playgroud)

文档: https : //developer.mozilla.org/en-US/docs/Web/API/Window/scroll

另见: https : .scrollIntoView() //developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView


演示:

var options = {
    top:       0,        // Number of pixels along the Y axis to scroll the window or element
    left:      0,        // Number of pixels along the X axis to scroll the window or element.
    behavior:  'smooth'  // ('smooth'|'auto') - animate smoothly, or move in a single jump
}
Run Code Online (Sandbox Code Playgroud)
document.getElementById('btn').addEventListener('click',function(){

  document.getElementById('container').scroll({top:0,behavior:'smooth'});
  
});
Run Code Online (Sandbox Code Playgroud)
/*DEMO*/
#container{
  width:300px;
  max-height:300px;
  padding:1rem;
  margin-left:auto;
  margin-right:auto;
  background-color:#222;
  color:#ccc;
  text-align:justify;
  overflow-y:auto;
}
#btn{
  width:100%;
  margin-top:1rem;
}
Run Code Online (Sandbox Code Playgroud)


Fra*_*oël 8

对于那些仍然无法完成这项工作的人,请确保在使用jQuery函数之前显示溢出的元素.

例:

$('#elem').show();
$('#elem').scrollTop(0);
Run Code Online (Sandbox Code Playgroud)


小智 7

这对我有用:

document.getElementById('yourDivID').scrollIntoView();
Run Code Online (Sandbox Code Playgroud)

  • 另请注意,“scollIntoView”仅在您在要滚动的元素上调用它时才有效。换句话说,不要在要滚动**到**的元素上调用它,而是在要滚动的元素上调用它。 (4认同)
  • 这是我的首选解决方案。为了平滑过渡,请添加:`document.getElementById("yourDivID").scrollIntoView({behavior: "smooth", block: "start", inline: "nearest"})` (2认同)

Mah*_*ani 6

当通过类名获取元素时,不要忘记返回值是一个数组;因此这段代码:

document.getElementByClassName("dropdown-menu").scrollTop = 0
Run Code Online (Sandbox Code Playgroud)

行不通。请改用下面的代码。

document.getElementByClassName("dropdown-menu")[0].scrollTop = 0
Run Code Online (Sandbox Code Playgroud)

我想其他人可能会遇到和我类似的问题;所以这应该可以解决问题。


Ash*_*win 5

如果你想滚动平滑过渡,你可以使用这个!

\n\n

(原版 JS)

\n\n
const tabScroll = document.getElementById("tabScroll");\nwindow.scrollTo({\n  \'behavior\': \'smooth\',\n  \'left\': 0,\n  \'top\': tabScroll.offsetTop - 80\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

如果您的目标用户是ChromeFirefox,那么这很好!但不幸的是,所有浏览器都不能很好地支持此方法。 检查这里

\n
\n\n

希望这可以帮助!!

\n