javascript - 滚动时如何使网站捕捉到下一个 anchor ?

标签 javascript html css scroll

我正在看这个网站的滚动效果:http://www.monokroom.com 基本上页面上有 anchor ,当您使用鼠标滚轮滚动时(无论多少或多少)都会产生橡皮筋捕捉效果,自动拉伸(stretch)并跳转到下一部分。我什至不知道这叫什么。

我试过滚动捕捉,但所有内容都是水平的而不是垂直的。

我希望能够将它包含在我正在开发的网站中,并且只想知道在哪里可以找到我可以使用的代码。

最佳答案

该站点使用扩展(用于购买):

https://alvarotrigo.com/fullPage/


但是你可以做类似的事情:

         $('html, body').animate({
           'scrollTop': $('#YourAnchorIDhere').offset().top
         }, 2000);

这里是一个示例代码片段。

(function($) {
    $(document).ready(function() {
         $('html, body').animate({
           'scrollTop':   $('#anchor123').offset().top
         }, 2000);

         $('html, body').animate({
           'scrollTop':   $('#anchor456').offset().top
         }, 2000);
    });
})(jQuery);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<html>
<body>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div id="anchor123">Anchor1!</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div id="anchor456">Anchor2</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
<div>Test</div>
</body>
</html>

我们使用 offset() 将 jquery 动画附加到 scrollTop;

https://api.jquery.com/scrollTop/ - 描述:获取匹配元素集合中第一个元素滚动条的当前垂直位置,或者为每个匹配元素设置滚动条的垂直位置。

http://api.jquery.com/offset/ - 描述:获取匹配元素集合中第一个元素相对于文档的当前坐标。

更改代码中的“2000”数字以指定您希望 .animate({}) 运行的时间长度

关于javascript - 滚动时如何使网站捕捉到下一个 anchor ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56085346/

相关文章:

html - 带有换行文本的内联元素,虽然没有 float 但垂直对齐

javascript - 在 iPad 上使用 Javascript 加载大图像和图 block

javascript - 按住空格键会导致鼠标光标消失

html - CSS3 动画钟摆效果

html - ASP.NET 可折叠导航栏

css - rails 5 : form_for select field tag with select class

javascript - 如何将选定的可观察对象附加到新添加的元素?

javascript - 在 jQuery 中模拟悬停

javascript - 如何使用文件协议(protocol)在 Chrome/Webkit 中从一帧调用 JavaScript 函数到另一帧

css - 2 列布局,文本位于图像右侧,折叠成 1 列,文本位于上方和下方?