当前位置:首页 > JavaScript

js实现一秒滚动的效果

2026-01-31 11:45:31JavaScript

使用 window.scrollBy 实现平滑滚动

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

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 触发滚动。

<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 库。

js实现一秒滚动的效果

<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实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

js实现定位

js实现定位

使用Geolocation API获取当前位置 在JavaScript中,可以通过浏览器内置的Geolocation API获取用户的地理位置信息。该API需要用户授权才能访问位置数据。 if (n…