环境:Firefox 16⁄27 和 Chrome 33
我有一个 <div>
(带滚动条),其中包含很多元素 <p>
。
If I call scrollIntoView()
on a <p>
element, I expect only the scroll of the div
to move, but the complete page (outside of the <div>
) 滚动。
JSFiddle 示例:http: //jsfiddle.net/7fH8K/7/
这里出了什么问题?
原文由 Bhuvan 发布,翻译遵循 CC BY-SA 4.0 许可协议
只需使用参数
false
调用scrollIntoView()
以指示不应滚动到顶部。有关详细信息,请参阅 MDN 上
Element.scrollIntoView()
的说明。JSFiddle 页面向下滚动的原因是
scrollIntoView()
滚动所有可滚动的祖先元素以显示你调用的元素scrollIntoView()
上。并且由于页面的<body>
实际上高于视口,但仅通过overflow: hidden;
隐藏了滚动,它向下滚动页面试图对齐p
元素与顶部。这是此行为的一个简单示例:
文件 scroll.html :
文件 scroll2.html :
当您单击将 最后一段滚动到视图 按钮时,整个页面将滚动,以便该段落显示在视口的顶部。