首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Vanilla Javascript没有执行平滑滚动功能

Vanilla JavaScript是指纯粹的JavaScript,即没有使用任何框架或库的JavaScript。执行平滑滚动功能是指在网页中实现平滑滚动效果,即当用户点击页面内的链接或滚动条时,页面会平滑地滚动到目标位置,而不是瞬间跳转或滚动。

要实现平滑滚动功能,可以使用JavaScript的scrollIntoView()方法结合CSS的scroll-behavior属性来实现。scrollIntoView()方法可以将指定的元素滚动到浏览器窗口的可视区域内,而scroll-behavior属性可以设置滚动行为为平滑滚动。

以下是一个示例代码,演示如何使用Vanilla JavaScript实现平滑滚动功能:

代码语言:txt
复制
<!DOCTYPE html>
<html>
<head>
  <style>
    html {
      scroll-behavior: smooth;
    }
  </style>
</head>
<body>
  <nav>
    <ul>
      <li><a href="#section1">Section 1</a></li>
      <li><a href="#section2">Section 2</a></li>
      <li><a href="#section3">Section 3</a></li>
    </ul>
  </nav>

  <section id="section1">
    <h2>Section 1</h2>
    <p>This is the content of section 1.</p>
  </section>

  <section id="section2">
    <h2>Section 2</h2>
    <p>This is the content of section 2.</p>
  </section>

  <section id="section3">
    <h2>Section 3</h2>
    <p>This is the content of section 3.</p>
  </section>

  <script>
    // 获取所有带有锚点链接的<a>标签
    const links = document.querySelectorAll('a[href^="#"]');

    // 为每个链接添加点击事件监听器
    links.forEach(link => {
      link.addEventListener('click', e => {
        e.preventDefault(); // 阻止默认的跳转行为

        const target = document.querySelector(link.getAttribute('href')); // 获取目标元素

        // 使用scrollIntoView方法实现平滑滚动
        target.scrollIntoView({
          behavior: 'smooth'
        });
      });
    });
  </script>
</body>
</html>

在上述示例代码中,我们首先在CSS中设置了scroll-behavior属性为smooth,以实现平滑滚动效果。然后使用JavaScript获取所有带有锚点链接的<a>标签,并为每个链接添加点击事件监听器。当用户点击链接时,通过scrollIntoView()方法将目标元素滚动到可视区域内,设置behavior参数为smooth以实现平滑滚动效果。

推荐的腾讯云相关产品和产品介绍链接地址:

请注意,以上仅为示例推荐的腾讯云产品,并非广告或推销。在实际应用中,选择合适的云计算产品应根据具体需求和场景进行评估和选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android 使用 Scroller 实现平滑滚动功能的示例代码

记录使用Scroller实现平滑滚动,效果图如下: ?...一、自定义View中实现View的平滑滚动 public class ScrollerView extends View { private Scroller mScroller; private Paint...直到computeScrollOffset()返回false,动画执行完成,滚动完成。...二、直接使用Scroller实现View的平滑滚动 我们知道,Scroller会帮我们计算当前时间,插值器返回的值。 而如果直接使用Scroller实现平滑滚动的话,也需要借助带时间的监听器。...到此这篇关于Android 使用 Scroller 实现平滑滚动的文章就介绍到这了,更多相关android Scroller 平滑滚动内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持

93221

现代浏览器探秘(part4):事件处理

2:将鼠标悬停在页面图层上 了解非快速可滚动区域 由于JavaScript是运行在主线程上的,所以当合成页面时,合成器线程会标记页面的一个区域,该区域将事件处理程序附加为“非快速可滚动区域”。...在鼠标事件中使用 passive:true 选项意味着可以平滑滚动页面,但是在你想要用preventDefault 来限制滚动方向时,垂直滚动可能已经开始了。...如果类似touchmove的连续事件被发送到主线程120次,那么与屏幕刷新的速度相比,它可能会触发过多的命中测试和JavaScript执行。 ?...向你的站点添加功能策略 功能策略是一个新的Web平台功能,可以在你构建项目时为你提供保护。 启用功能策略可确保应用的某些行为并防止你出错。...启用 sync-script: 'none' 时,将禁止解析器阻止 JavaScript 执行。 这可以防止你的代码阻止解析器,并且浏览器也不需要担心暂停解析器。 总结 ?

1.3K20

操作滚动条小结:scrollIntoViewanimate等方法的来龙去脉

锚点跳转滚动滚动条网页中的锚点跳转是HTML早期功能之一,锚点(anchor)跳转是1991年发布的HTML标准的一部分,这是超文本链接的基本特性。...1995年起搭载cookie、框架和JavaScript等多样独自功能的2.0版上市。从前前端码农开始可以大踏步干活了,与通宵达旦干兼容血战到底。...但是,他对Java一点兴趣也没有。为了完成(应付)公司安排的任务,他只用10天时间就把JavaScript设计出来了。虽然语言的设计者水平非常NB,但谁也架不住“时间紧,任务重”。...1995年浏览器有JavaScript 功能,可以通过JavaScript 手动更爱hash进行跳转window.location.hash="section1"JavaScript操作滚动条,还是不尽人意操作滚动滚动...window.scroll(100, 100);允许你指定滚动行为(如是否平滑滚动):// 使用对象参数带有平滑滚动window.scrollTo({ top: 100, left: 100, behavior

28910

2019 年 最受欢迎的10个 JavaScript 动画库!

超过 15k 星星,Velocity是一个快速的 Javascript 动画引擎,拥有与jQuery的 $.animate() 相同的API。它具有彩色动画、转换、循环、画架、SVG支持和滚动。...GSAP 是一个JavaScript库,用于创建高性能、零依赖、跨浏览器动画,据称在超过400万个网站上使用。GSAP是灵活的,可以与React、Vue、Angular和vanilla JS协同工作。...拥有15K颗星星和零依赖,这个库为 web 和移动浏览器提供了简单的滚动动画,以动画的方式显示滚动中的内容。它支持多种简洁的效果类型,甚至允许你使用自然语言定义动画。...、 一个完全成熟的原生JavaScript动画引擎,具有跨浏览器动画的基本功能。 重点是代码质量,灵活性,性能和大小(核心引擎17k 和 gzipped 5.5k) - 这是一个演示。...该库也是可扩展的,因此你可以添加自己的功能

1.6K10

2019 年 11 个受欢迎的 JavaScript 动画库!

超过46K的star,这个流行的库提供了非常多的3D显示功能,以一种直观的方式使用 WebGL。...超过15k的star,Velocity是一个快速的 Javascript 动画引擎,拥有与jQuery的 $.animate() 相同的API。它具有彩色动画、转换、循环、画架、SVG支持和滚动。...GSAP 是一个JavaScript库,用于创建高性能、零依赖、跨浏览器动画,据称在超过400万个网站上使用。GSAP是灵活的,可以与React、Vue、Angular和vanilla JS协同工作。...拥有15K的star和零依赖,这个库为 web 和移动浏览器提供了简单的滚动动画,以动画的方式显示滚动中的内容。它支持多种简洁的效果类型,甚至允许你使用自然语言定义动画。...一个完全成熟的原生JavaScript动画引擎,具有跨浏览器动画的基本功能。 重点是代码质量,灵活性,性能和大小(核心引擎17k 和 gzipped 5.5k) - 这是一个演示。

2.3K20

jQuery 自定义网页滚动条样式插件 mCustomScrollbar 的介绍和使用方法

,它通过 Brandon Aaron jquery mouse-wheel plugin 提供了鼠标滚动的支持,并且在滚动的过程中,还可以缓冲滚动使得滚动更加的平滑,还可以自动调整滚动条的位置和定义滚动到的位置等...如果当你在使用类似 Google 或者 Sina 的常用 Javascript 库的加速服务的话,更推荐采用下面的这种 fallback 的写法,如果 CDN 的 JavaScript 代码没有加载成功...来让它出现滚动条,否则是没有效果的。...默认是垂直滚动条 值可为:true(创建水平滚动条) 或 false scrollInertia:Integer:滚动的惯性值 在毫秒中 使用0可以无滚动惯性 (滚动惯性可以使区块滚动更加平滑) scrollEasing...:{ onScrollStart:function(){} }:使用自定义的回调函数在滚动时间开始的时候执行 具体请看Demo callbacks:{ onScroll:function(){} }:自定义回调函数在滚动执行

14K30

hexo-theme-yun 制作笔记

决定使用 medium-zoom 替代,并全部使用 Vanilla JavaScript,以移除 jQuery。...随后为了移除 jQuery 依赖,使用 Vanilla JavaScript 进行了重写,并混合 CSS 选择器来实现,(应该)提升了性能。...不过我觉得文章目录的滚动激活效果倒是可以尝试使用这种方法来优化看看。 虽然现在也并没有觉得速度受到什么影响,但是总觉得冥冥之中应该是能提升的(玄学),同时可以去掉节流函数等代码。...- v0.3.0 v0.4.0-v0.7.0,直接去掉了(代码看起来比较简洁),sidebar.js - v0.7.0 简而言之,我便想用 Intersection Observer 重构一下目录滚动监听功能...其实 1.0 的功能和 0.9.x 基本都是一样的(不要问我为什么没有 alpha/rc 版本,因为不好看!

1K20

吸顶效果解决方案

页面向下滚动超过吸顶元素初始位置时,把吸顶元素固定在顶部 要求吸顶的元素一般是二级导航栏、搜索框、文章标题栏(h1)、表头(thead)、tab条等等,共同特点是在内容或功能上比较重要,但又不是最重要的元素...监听滚动判断位置的方法完全失效,平滑吸顶效果变成了滚过临界位置直到停止滚动时,吸顶元素跳到目标位置,体验非常差,不可忍受 scroll不能用,但还可以有一些奇怪的思路,比如定时器读scrollTop,touchmove...,iscroll等等 有前辈做了详细测试,见参考资料1 定时器在手指没有离开屏幕时不会执行,touchmove触发频率足够,也能拿到scrollTop,但touchend后,惯性滚动期间,没有任何事件可用...,比Android scroll方案体验更平滑,但限制很明显,无法实时获知吸顶状态,于此相关的各种效果都受限制,比如吸顶tab列表: sticky-tab 非吸顶状态时可以划动列表部分,让页面滚动,转到吸顶状态...CSS sticky并不能解决这个问题 笔者还没有找到合适的解决方案,目前方案是牺牲tab浏览状态独立性,多tab共用body的滚动条,切换tab时滚回之前的位置。

3.4K10

「首席架构师推荐」一系列很棒的的浏览器端JavaScript库资源

模板引擎 模板引擎允许您执行字符串插值。 mustache.js - JavaScript中{{mustaches}}的最小模板。 handlebars.js - Mustache模板语言的扩展。...mori - 一个库,用于使用ClojureScript的持久数据结构,并从舒适的vanilla JavaScript中支持API。...q - 用于在JavaScript中创建和编写异步promise的工具。 step - 一个异步控制流库,可以轻松地逐步执行逻辑。 contra - 具有功能性的异步流量控制。...没有jQuery。 parallax - 对智能设备方向作出反应的视差引擎。 stellar.js - 视差滚动变得容易。 plax - jQuery powered parallaxing。...ECMAScript 6兼容性表 - 适用于各种环境的所有ECMAScript 6功能的兼容性表。 Babel(以前为6to5) - 将ES6 +代码转换为vanilla ES5,没有运行时。

6.6K21

9个工作日常中非常实用的CSS技巧,一定要进来瞧瞧

3)、 平滑滚动 你访问一些网站并尝试转到不同的部分,它会平滑滚动到该部分。这不是高级编码,但在你的 CSS 中只需要一行代码,你就可以实现这一点。 效果如下: ?...你可以将 CSS scroll-behavior 属性与 html一起用作选择器,以启用整个 HTML 页面的平滑滚动。 ?...7)、 自定义滚动条 默认滚动条对用户没有吸引力,你可以做的是自定义此滚动条。 ?...我们只用 CSS 就能做到这一点,如果你想在跨浏览器上获得全面支持,最好使用 JavaScript 库来制作滚动条。 ?...8) 、禁用用户选择 有时,你不想让用户选择复制你网页上面的某些内容,此时,你可以选择使用禁止用户选择复制内容的功能。就算用户选中了内容,但是依然不能复制所选的内容。 样式效果如下: ?

1.4K30
领券