ChatGPT解决这个技术问题 Extra ChatGPT

滚动回可滚动 div 的顶部

<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 的顶部?


a
andrewb
var myDiv = document.getElementById('containerDiv');
myDiv.innerHTML = variableLongText;
myDiv.scrollTop = 0;

请参阅 scrollTop 属性。


试过但没有用。当一个 variableLongtext 加载到容器 div 中并正在查看它的中间时,然后滑动到新的 variableLongtext,它将显示在容器中,但我们不会查看它的顶部,它已经被滚动了下降一点。
@s12345 您最好制作一个可重现的测试用例,向我们展示您的问题(例如在 jsfiddle.net 上),并说明您遇到的操作系统/浏览器/版本。
对不起我的错误..它有效!对两个相似的 div 感到困惑。
不需要 jQuery: document.getElementById('my_element_id_to_scroll').scrollTo(0,0);
M
Mahmoud Ibrahim

另一种使用流畅动画的方法是这样的

$("#containerDiv").animate({ scrollTop: 0 }, "fast");

效果很好,但不要使用 slow,它太……慢了!
而不是传递 slow 作为第二个参数。你可以传入一个整数,它是动画完成的毫秒数。
将其更改为快速:)
最佳答案!谢谢!
如果您使用的是 jquery,这可以正常工作。如果您使用的是角度打字稿(纯 javascript),这将不起作用。你怎么能用普通的javascript来实现这一点。
S
Sunnyside Productions

我尝试了这个问题的现有答案,但它们都没有为我在 Chrome 上工作。起作用的方法略有不同:

$('body, html, #containerDiv').scrollTop(0);

那是jQuery的东西吗?因为我得到scrollTop is not a function
R
Rajat

这对我有用:

document.getElementById('yourDivID').scrollIntoView();

这是我的首选解决方案。要平滑过渡,请添加:document.getElementById("yourDivID").scrollIntoView({behavior: "smooth", block: "start", inline: "nearest"})
另外,请注意 scollIntoView 仅在您在要滚动的元素上调用它时才有效。换句话说,不要在要滚动的元素上调用它,在要滚动的元素上调用它。
B
Brian Burns

滚动到

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 指定像素中的垂直滚动条位置,第二个参数是可选参数,显示完成任务的时间(以微秒为单位)。


如果我们只想将内部 div 滚动到顶部怎么办?这最终将不起作用。
元素也有 .scrollTo 方法,你可以做 document.getElementById('scroller').scrollTo(0,0)
J
Jakub Muda

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

例子:

$('#elem').show();
$('#elem').scrollTop(0);

救生员!开始失去与 scrollTop 不工作的生活意愿!必须将我的 scrollTop 调用放在 setTimeout 函数中。
我有同样的感觉!我在一个引导模式对话框中工作。我必须为模态设置一个事件,该事件在模态停止动画之前不会重置滚动条。这是我使用的代码: $('#add_modal').on('shown.bs.modal', function (e) { $('div.border').scrollTop(0); });
J
Jakub Muda

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; }

痛苦本身是很重要的,随之而来的就是教练,但同时也发生了一些伟大的工作和痛苦。就最小的细节而言,除非他从中获得一些好处,否则任何人都不应该从事任何类型的工作。不要在责备中对痛苦感到愤怒,在快乐中他要成为痛苦中的一根头发,让他逃离痛苦。除非被情欲蒙蔽,否则他们不会出来;他们有过错,谁放弃了自己的职责,软化了他们的心,那就是劳苦。照顾病人很重要,客户要跟着他们,但同时他们也会受到一些巨大的痛苦和痛苦的影响。就最小的细节而言,除非他从中获得一些好处,否则任何人都不应该从事任何类型的工作。不要在责备中对痛苦感到愤怒,在快乐中他要成为痛苦中的一根头发,让他逃离痛苦。除非被情欲蒙蔽,否则他们不会出来;他们有过错,谁放弃了自己的职责,软化了他们的心,那就是劳苦。照顾病人很重要,医生要跟进,但这是一个非常痛苦和痛苦的时期。就最小的细节而言,除非他从中获得一些好处,否则任何人都不应该从事任何类型的工作。不要在责备中对痛苦感到愤怒,在快乐中他要成为痛苦中的一根头发,让他逃离痛苦。除非被情欲蒙蔽,否则他们不会出来;他们有过错,谁放弃了自己的职责,软化了他们的心,那就是劳苦。照顾病人很重要,医生要跟进,但这是一个非常痛苦和痛苦的时期。就最小的细节而言,除非他从中获得一些好处,否则任何人都不应该从事任何类型的工作。不要在责备中对痛苦感到愤怒,在快乐中他要成为痛苦中的一根头发,让他逃离痛苦。除非被情欲蒙蔽,否则他们不会出来;他们有过错,谁放弃了自己的职责,软化了他们的心,那就是劳苦。照顾病人很重要,医生要跟进,但这是一个非常痛苦和痛苦的时期。就最小的细节而言,除非他从中获得一些好处,否则任何人都不应该从事任何类型的工作。不要在责备中对痛苦感到愤怒,在快乐中他要成为痛苦中的一根头发,让他逃离痛苦。除非他们被欲望蒙蔽了,否则他们不会出来,他们有过错,他们放弃了自己的职责,软化了他们的心,也就是他们的烦恼。


A
Ashwin

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

(香草JS)

const tabScroll = document.getElementById("tabScroll");
window.scrollTo({
  'behavior': 'smooth',
  'left': 0,
  'top': tabScroll.offsetTop - 80
});

如果您的目标用户是 Chrome 和 Firefox,那么这很好!但不幸的是,这种方法在所有浏览器上都没有得到足够好的支持。在这里检查

希望这可以帮助!!


M
Mahsan Nourani

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

document.getElementByClassName("dropdown-menu").scrollTop = 0

不会工作。请改用下面的代码。

document.getElementByClassName("dropdown-menu")[0].scrollTop = 0

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


A
AlexTR

对我来说,scrollTop 方式不起作用,但我发现了其他方式:

element.style.display = 'none';
setTimeout(function() { element.style.display = 'block' }, 100);

虽然没有检查可靠 css 渲染的最短时间,但 100 毫秒可能是多余的。


I
Irv Lennert

根据 François Noël 的回答“对于那些仍然无法完成这项工作的人,请确保在使用 jQuery 函数之前显示溢出的元素。”

我一直在使用引导模式,我在 div 中反复提出帐户权限,该 div 在 y 维度上溢出。我的问题是,我试图使用 jquery .scrollTop(0) 函数,无论我如何尝试它都无法正常工作。我必须为模态设置一个事件,该事件在模态停止动画之前不会重置滚动条。最终对我有用的代码在这里:

    $('#add-modal').on('shown.bs.modal', function (e) {
        $('div.border').scrollTop(0);
    });

F
Fred K

这是它对我有用的唯一方法,具有平滑的滚动过渡:

  $('html, body').animate({
    scrollTop: $('#containerDiv').offset().top,
  }, 250);

c
csandreas1

ID 应该是具有溢出 css 属性的相应 div 的 id。

document.querySelector('#YOUR_OVERFLOWED_DIV').scrollTop = 0;


R
Ruben

如果 html 内容溢出单个视口,则仅使用 javascript 对我有用:

document.getElementsByTagName('body')[0].scrollTop = 0;

问候,


A
Amir shah

这两个代码对我来说就像一个魅力,这首先需要滚动到页面顶部,但是如果你想滚动到某个特定的 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);