<div id="containerDiv"></div>
#containerDiv {
position: absolute;
top: 0px;
width: 400px;
height: 100%;
padding: 5px;
font-size: .875em;
overflow-y: scroll;
}
document.getElementById("containerDiv").innerHTML = variableLongText;
下次如何将滚动位置重置回容器 div 的顶部?
var myDiv = document.getElementById('containerDiv');
myDiv.innerHTML = variableLongText;
myDiv.scrollTop = 0;
请参阅 scrollTop
属性。
另一种使用流畅动画的方法是这样的
$("#containerDiv").animate({ scrollTop: 0 }, "fast");
slow
,它太……慢了!
slow
作为第二个参数。你可以传入一个整数,它是动画完成的毫秒数。
我尝试了这个问题的现有答案,但它们都没有为我在 Chrome 上工作。起作用的方法略有不同:
$('body, html, #containerDiv').scrollTop(0);
scrollTop is not a function
。
这对我有用:
document.getElementById('yourDivID').scrollIntoView();
document.getElementById("yourDivID").scrollIntoView({behavior: "smooth", block: "start", inline: "nearest"})
scollIntoView
仅在您在要滚动的元素上调用它时才有效。换句话说,不要在要滚动的元素上调用它到,在要滚动的元素上调用它。
滚动到
window.scrollTo(0, 0);
是将窗口滚动到顶部的最终解决方案 - 最好的部分是它不需要任何 id 选择器,即使我们使用 IFRAME 结构,它也能很好地工作。
scrollTo() 方法将文档滚动到指定的坐标。 window.scrollTo(xpos, ypos); xpos 编号 必填。沿 x 轴(水平)滚动到的坐标,以像素为单位 ypos Number 必需。沿 y 轴(垂直)滚动到的坐标,以像素为单位
jQuery
做同样事情的另一个选择是使用 jQuery,它会给相同的外观更平滑
$('html,body').animate({scrollTop: 0}, 100);
其中 scrollTop 后的 0 指定像素中的垂直滚动条位置,第二个参数是可选参数,显示完成任务的时间(以微秒为单位)。
document.getElementById('scroller').scrollTo(0,0)
对于那些仍然无法完成这项工作的人,请确保在使用 jQuery 函数之前显示溢出的元素。
例子:
$('#elem').show();
$('#elem').scrollTop(0);
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
}
文档: https://developer.mozilla.org/en-US/docs/Web/API/Window/scroll
另请参阅: .scrollIntoView()
https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView
演示:
document.getElementById('btn').addEventListener('click',function(){ document.getElementById('container').scroll({top:0,behavior:'smooth'}); }); /*DEMO*/ #container{ 宽度:300px;最大高度:300px;填充:1 项;左边距:自动;边距右:自动;背景颜色:#222;颜色:#ccc;文本对齐:对齐;溢出-y:自动; } #btn{ 宽度:100%;边距顶部:1rem; }
如果你想滚动平滑过渡,你可以使用它!
(香草JS)
const tabScroll = document.getElementById("tabScroll");
window.scrollTo({
'behavior': 'smooth',
'left': 0,
'top': tabScroll.offsetTop - 80
});
如果您的目标用户是 Chrome 和 Firefox,那么这很好!但不幸的是,这种方法在所有浏览器上都没有得到足够好的支持。在这里检查
希望这可以帮助!!
通过类名获取元素时,不要忘记返回值是一个数组;因此这段代码:
document.getElementByClassName("dropdown-menu").scrollTop = 0
不会工作。请改用下面的代码。
document.getElementByClassName("dropdown-menu")[0].scrollTop = 0
我认为其他人可能会遇到与我类似的问题;所以这应该可以解决问题。
对我来说,scrollTop 方式不起作用,但我发现了其他方式:
element.style.display = 'none';
setTimeout(function() { element.style.display = 'block' }, 100);
虽然没有检查可靠 css 渲染的最短时间,但 100 毫秒可能是多余的。
根据 François Noël 的回答“对于那些仍然无法完成这项工作的人,请确保在使用 jQuery 函数之前显示溢出的元素。”
我一直在使用引导模式,我在 div 中反复提出帐户权限,该 div 在 y 维度上溢出。我的问题是,我试图使用 jquery .scrollTop(0) 函数,无论我如何尝试它都无法正常工作。我必须为模态设置一个事件,该事件在模态停止动画之前不会重置滚动条。最终对我有用的代码在这里:
$('#add-modal').on('shown.bs.modal', function (e) {
$('div.border').scrollTop(0);
});
这是它对我有用的唯一方法,具有平滑的滚动过渡:
$('html, body').animate({
scrollTop: $('#containerDiv').offset().top,
}, 250);
ID 应该是具有溢出 css 属性的相应 div 的 id。
document.querySelector('#YOUR_OVERFLOWED_DIV').scrollTop = 0;
如果 html 内容溢出单个视口,则仅使用 javascript 对我有用:
document.getElementsByTagName('body')[0].scrollTop = 0;
问候,
这两个代码对我来说就像一个魅力,这首先需要滚动到页面顶部,但是如果你想滚动到某个特定的 div,请使用带有 div id 的第二个代码。
$('body, html, #containerDiv').scrollTop(0);
document.getElementById('yourDivID').scrollIntoView();
如果你想通过类名滚动到使用下面的代码
var $container = $("html,body");
var $scrollTo = $('.main-content');
$container.animate({scrollTop: $scrollTo.offset().top - $container.offset().top + $container.scrollTop(), scrollLeft: 0},300);