【问题标题】:How can I scroll to some specific place/ID with JavaScript?如何使用 JavaScript 滚动到某个特定的位置/ID?
【发布时间】:2018-06-13 00:38:45
【问题描述】:

我正在尝试在没有 JQuery 的情况下自动滚动到某个特定的位置/ID。 现在我有了这个带有 JQuery 的代码块,这会将我发送到具有自动滚动功能的特定 ID。

$(function() {
  $('a[href*=#]').on('click', function(e) {
    e.preventDefault();
    $('html, body').animate({
      scrollTop: $($(this).attr('href')).offset().top
    }, 900, 'linear');
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#one">one</a>
<div id="one"></div>

我希望用 JavaScript 做一些类似的效果,有什么想法吗?

【问题讨论】:

标签: javascript jquery dom-events


【解决方案1】:

这是您可以做的最好的开始,当使用 javascript 仅使用 window.scrollelement.getBoundingClientRect().top 以平滑效果滚动时,请参阅下面的演示

#one {
  margin-top: 1000px
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#one">one</a>

<div id="one">down-here</div>

<script type="text/javascript">
  (function() {
    let anchors = document.querySelectorAll('a[href*="#"]');

    anchors.forEach(function(anchor) {
      anchor.addEventListener('click', function(e) {
        e.preventDefault();

        let id = this.getAttribute("href");
        let targetElement = document.querySelector(id)
        let scrollHeight = targetElement.getBoundingClientRect().top + window.scrollY;

        //scroll with smoooth effect
        window.scroll({
          top: scrollHeight,
          behavior: 'smooth'
        });
      });

    })

  })();
</script>

【讨论】:

  • 哦不!如何做到这一点,但只使用 JavaScript 但没有 Jquery :(
  • 滚动条已经使用了javascript,没有任何jquery,唯一的jquery是.on('click',function())你可以用addEventListener('click', function(e) {替换它我已经更新了代码,再次检查并将答案标记为正确,如果它对你有用@SrJefers
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-16
  • 1970-01-01
相关资源
最近更新 更多