当前位置:首页 > JavaScript

js实现一秒滚动的效果

2026-01-31 11:45:31JavaScript

使用 window.scrollBy 实现平滑滚动

通过 window.scrollBy 方法结合 requestAnimationFrame 实现平滑滚动效果。该方法逐帧调整滚动位置,形成动画效果。

js实现一秒滚动的效果

function smoothScrollBy(distance, duration) {
  const start = window.pageYOffset;
  const startTime = performance.now();

  function scrollStep(timestamp) {
    const elapsed = timestamp - startTime;
    const progress = Math.min(elapsed / duration, 1);
    window.scrollBy(0, distance * progress - (window.pageYOffset - start));
    if (progress < 1) {
      requestAnimationFrame(scrollStep);
    }
  }

  requestAnimationFrame(scrollStep);
}

// 调用示例:每秒滚动100像素
smoothScrollBy(100, 1000);

使用 CSS scroll-behavior 属性

通过 CSS 的 scroll-behavior: smooth 属性实现原生平滑滚动效果,再通过 JavaScript 触发滚动。

js实现一秒滚动的效果

<style>
  html {
    scroll-behavior: smooth;
  }
</style>

<script>
  function scrollPerSecond() {
    const currentPosition = window.pageYOffset;
    window.scrollTo(0, currentPosition + 100);
    setTimeout(scrollPerSecond, 1000);
  }
  scrollPerSecond();
</script>

使用 Element.scrollIntoView 方法

通过循环调用 scrollIntoView 方法实现逐元素滚动效果。

let currentElement = document.body.firstElementChild;

function scrollNextElement() {
  if (currentElement) {
    currentElement.scrollIntoView({ behavior: 'smooth' });
    currentElement = currentElement.nextElementSibling;
    setTimeout(scrollNextElement, 1000);
  }
}

scrollNextElement();

使用第三方库(如 SmoothScroll)

引入第三方库实现更复杂的滚动效果,例如 smooth-scroll 库。

<script src="https://cdn.jsdelivr.net/npm/smooth-scroll@16.1.3/dist/smooth-scroll.polyfills.min.js"></script>
<script>
  const scroll = new SmoothScroll();
  let currentPosition = 0;

  function autoScroll() {
    currentPosition += 100;
    scroll.animateScroll(currentPosition);
    setTimeout(autoScroll, 1000);
  }

  autoScroll();
</script>

注意事项

  • 移动端设备可能需要处理触摸事件冲突
  • 长时间运行的滚动需要添加终止条件
  • 性能敏感场景建议使用 requestAnimationFrame
  • 某些浏览器可能需要 polyfill 来支持平滑滚动 API

以上方法均可实现每秒自动滚动效果,可根据具体需求选择简单 CSS 方案或更可控的 JavaScript 动画方案。

标签: 效果js
分享给朋友:

相关文章

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

vue实现气泡效果

vue实现气泡效果

实现气泡效果的方法 在Vue中实现气泡效果可以通过CSS动画、第三方库或自定义组件完成。以下是几种常见方法: 使用纯CSS动画 通过CSS的@keyframes和transform属性创建气泡上升动…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…