所以我绝望地试图获得一些滚动功能来在页面上工作。在运气不佳之后,我决定只停留window.scrollTo(0, 800);
在我的页面上,看看是否可以进行任何滚动。什么都不会发生。我有一个可以展开的手风琴,然后我想滚动到其中的特定元素。但是现在我很高兴看到这东西滚动。有人遇到这个吗?
谢谢!
所以我绝望地试图获得一些滚动功能来在页面上工作。在运气不佳之后,我决定只停留window.scrollTo(0, 800);
在我的页面上,看看是否可以进行任何滚动。什么都不会发生。我有一个可以展开的手风琴,然后我想滚动到其中的特定元素。但是现在我很高兴看到这东西滚动。有人遇到这个吗?
谢谢!
如果你有这样的事情:
html, body { height: 100%; overflow:auto; }
如果 body 和 html 的高度定义都为 100% 并且启用了滚动,则 window.scrollTo(和所有派生的滚动机制)不起作用,尽管显示滚动条(用户可以使用),当内容超过那个100%的身高。这是因为您看到的滚动条不是窗口的滚动条,而是正文的滚动条。
解决方案:
html { height: 100%; overflow:auto; }
body { height: 100%; }
我使用 setTimout 解决了这个问题。我正在使用 angularjs 但也许它也可以帮助 vanilla js。
setTimeout(function () {
window.scrollTo(0, 300);
},2);
我能够使用 jQuery 方法 animate() 解决这个问题。这是我使用的实现示例:
$('#content').animate({ scrollTop: elementOffset }, 200);
选择器正在获取 ID = "content" 的 div。然后我将 animate 方法应用于其上,并使用 scrollTop 作为选项。第二个参数是以毫秒为单位的动画持续时间。我希望这对其他人有帮助。
有时不仅仅是 CSS 问题,对我来说浏览器是罪魁祸首。我不得不用这个代码解决它:
if ('scrollRestoration' in window.history) {
window.history.scrollRestoration = 'manual'
}
它让开发人员拥有滚动更改的所有权。在此处阅读更多相关信息
这昨天发生在我身上,因为我有overflow: auto
一个 div 是一个孩子到<html>
和<body>
。
所以我了解到window.scrollTo()
为了工作,你必须在元素上设置overflow: auto
(或其他overflow-y: scroll
)<html>
。
我了解到document.body.scrollTo()
为了工作,你必须已经overflow
开始<body>
。
我了解到您也可以使用document.querySelector('#some-container').scrollTo()
.
就我而言,我想
window.scrollTo()
工作,所以我将溢出 CSS 放在<html>
.
我很惊讶这里没有其他答案谈论“确切哪个”元素是可滚动的。根 html 元素必须可滚动window.scrollTo()
才能工作。我下游的所有子元素<html>
都设置为height: auto
.
我的 CSS 是这样的:
html { position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: auto; }
body { width: 100%; height: auto; }
#app { width: 100%; height: auto; }