JavaScript:scrollIntoView()与scrollIntoViewIfNeeded()比较。

9

有人知道scrollIntoView()scrollIntoViewIfNeeded()之间有什么区别吗?

我没有看出它们之间的区别。如果元素不在可见区域内,它们都会滚动,并且如果已经可见,则不做任何事情。

2个回答

12

使用scrollIntoView()方法时,如果指定了'block'参数为'start'(默认值)、'center'或'end',即使元素已经完全在屏幕上,scrollIntoView()方法也会将其滚动到指定位置。

如果使用参数'nearest',则它的行为更像是scrollIntoViewIfNeeded()方法,即如果元素已经在屏幕上,则不会发生任何事情。


5

您的描述是正确的。

Element.scrollIntoViewIfNeeded() 方法会将当前元素滚动到浏览器窗口的可见区域内,如果它尚未在可见区域内。如果该元素已在浏览器窗口的可见区域内,则不会发生滚动。该方法是标准 Element.scrollIntoView() 方法的专有变体。

注意:它也被认为是非标准的。

https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoViewIfNeeded


我知道这不是标准的。但为什么要使用变量?我没有遇到过不同的结果。当在可见区域时,它们都不会滚动。 - Heyyy Marco
1
听起来你在寻找它存在的原因。我猜测它是在标准出现之前实施的,现在仍然没有被删除,而且他们给了标准版一个更好的名字。 - olore
1
所以,scrollIntoViewIfNeeded现在已经过时了吗?好的,我会使用标准的。 - Heyyy Marco
在某些情况下(当不需要滚动时),scrollIntoView()存在缺陷。似乎它不会再被修复了,也许是规范出了问题。请参见https://dev59.com/e2gu5IYBdhLWcg3w2KbM。 - knallfrosch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接