如何使用JavaScript滚动到一个元素?

11 浏览
0 Comments

如何使用JavaScript滚动到一个元素?

我试图将页面移动到一个元素。\n我已尝试下面的代码,但无效:\n

document.getElementById("divFirst").style.visibility = 'visible';
document.getElementById("divFirst").style.display = 'block';

0
0 Comments

问题原因:用户想要通过JavaScript实现滚动到指定元素的效果。

解决方法:根据不同的浏览器,可以采用不同的方法实现滚动到指定元素的效果。

对于Chrome和Firefox浏览器,可以使用以下代码实现滚动到指定元素的效果:

const y = element.getBoundingClientRect().top + window.scrollY;
window.scroll({
  top: y,
  behavior: 'smooth'
});

对于IE、旧版Edge和旧版Safari浏览器,可以使用以下代码实现滚动到指定元素的效果:

element.scrollIntoView();

以上代码可以根据不同的浏览器进行封装,以实现不同浏览器下的兼容性。

另外,有一些用户提到了一些问题和改进方法,如在IE11浏览器中使用window.pageYOffset代替window.scrollY,以及在Safari浏览器中无法传递选项给window.scroll。对于这些问题,可以根据具体情况进行相应的修改和调整。

通过使用不同的方法,可以实现在不同浏览器下滚动到指定元素的效果。对于Chrome和Firefox浏览器,可以使用window.scroll方法,而对于IE、旧版Edge和旧版Safari浏览器,则可以使用element.scrollIntoView方法。根据具体情况,可以对代码进行相应的修改和调整,以实现不同浏览器下的兼容性。

0
0 Comments

如何使用JavaScript滚动到一个元素?

有人提出了一个问题:如何使用JavaScript滚动到一个元素?他们想要找到一种方法,通过JavaScript代码实现页面滚动到指定的元素位置。

在问题中,某些情况下可以使用锚点来“聚焦”div元素。他们给出了一个示例代码,如下所示:

然后,他们给出了以下JavaScript代码来实现滚动:

// the next line is required to work around a bug in WebKit (Chrome / Safari)
location.href = "#";
location.href = "#myDiv";

问题中还提到,Chrome(WebKit)存在一个bug,导致在设置了锚点后页面无法滚动。对此,他们给出了解决方法:使用以下代码:

location.href="#";
location.href="#myDiv";

此外,问题中还提到,使用`id="myDiv"`比使用`name="myDiv"`更好,并且也能正常工作。

此外,还有人在评论中提到,这种方法对他们来说不起作用,因为它会将所有这些导航事件添加到浏览器历史记录中,而且他们无法轻松返回到上一页。

在评论中,还某些情况下了另一种滚动到指定元素的方法:

var elmnt = document.getElementById("content");
elmnt.scrollIntoView();

以上就是问题的出现原因和解决方法的整理。通过使用JavaScript代码,可以实现页面滚动到指定元素的位置。无论是使用锚点还是`scrollIntoView()`方法,都可以达到这个目的。

0
0 Comments

问题的出现原因:用户想要使用JavaScript滚动到一个特定的元素。

解决方法:使用scrollIntoView方法。

scrollIntoView是有效的:

document.getElementById("divFirst").scrollIntoView();

在MDN文档中有完整的参考:

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

只有奇怪的"scrollIntoViewOptions"(平滑滚动等)只支持火狐浏览器。我在我的答案中的基本用法应该在几乎所有浏览器上都可以工作。

我确认,截至2021年4月16日,它在Opera和Chrome上也可以工作。

当使用这个解决方案并且你在顶部有一个固定的导航栏时,你需要考虑到这一点。另一种更合适的解决方案可能是使用正确计算的posY的windows.scrollTo(posX, posY)。

在Firefox、Opera和Safari中工作。

这里有另一个来源(caniuse),可以查看scrollIntoView的浏览器兼容性。

0