javascript - 从导航到特定部分的滚动效果

标签 javascript jquery html css

我正在尝试让我的代码滚动,以便当用户单击导航链接时,它会特别滚动到该部分。我无法弄清楚哪一行代码是错误的,因为当我点击它时它确实将我带到了它只是不滚动的部分。

$('.scroll-to').on('click', function(e) {
  e.preventDefault();
  var thisTarget = $(this).attr('href');
  var targetOffset = $(thisTarget).offset().top;
  $('html, body').animate({
    scrollTop: targetOffset
  }, 600);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav id="navigation">
  <section>
    <div class="navlinks">
      <a href="#about" class="scroll-to">about</a>
      <a href="3skills" class="scroll-to">skills</a>
      <a href="#work" class="scroll-to">work</a>
      <a href="#youtube" class="scroll-to">youtube</a>
      <a href="#recommendation" class="scroll-to">recommendations</a>
      <a href="#contactform" class="scroll-to">contact</a>
    </div>
  </section>
</nav>

最佳答案

您的上述代码按预期工作;只有两件事可能是错误的:

  • 你没有包含 jQuery
  • 您没有与目标相对应的 ID 元素

另请注意,元素不能以 ID 开头,因此您的 3skills 元素将永远无法滚动。我假设这只是散列的拼写错误,所以我将其更改为#skills

添加链接并确保它们不以数字开头会生成一个工作示例,如下所示:

$('.scroll-to').on('click', function(e) {
  e.preventDefault();
  
  var thisTarget = $(this).attr('href');
  var targetOffset = $(thisTarget).offset().top;
  
  $('html, body').animate({
    scrollTop: targetOffset
  }, 600);
});
#about {
  margin-top: 500px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="navlinks">
  <a href="#about" class="scroll-to">about</a>
  <a href="#skills" class="scroll-to">skills</a>
  <a href="#work" class="scroll-to">work</a>
  <a href="#youtube" class="scroll-to">youtube</a>
  <a href="#recommendation" class="scroll-to">recommendations</a>
  <a href="#contactform" class="scroll-to">contact</a>
</div>

<div id="about">Lorem ipsum</div>
<div id="skills">Lorem ipsum</div>
<div id="work">Lorem ipsum</div>
<div id="youtube">Lorem ipsum</div>
<div id="recommendation">Lorem ipsum</div>
<div id="contactform">Lorem ipsum</div>

希望这对您有所帮助!

关于javascript - 从导航到特定部分的滚动效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48697600/

相关文章:

javascript - 在 p5js 中重置草图

html - purecss.io - 为什么两个 pure-u-1-2 元素堆叠在宽屏幕上?

html - CSS-方形div的响应式全宽网格

javascript - 固定导航下方的 HTML 内容

javascript - 按 Enter 总是提交表单

javascript - 使用按钮标签和js更改选中的单选按钮

javascript - 从react-icons组件获取SVG

javascript - 如何通过标签名称获取子节点

jquery - 在完整日历中显示默认标题

javascript - 如何使用自定义顺序对对象数组进行排序?