当前位置:首页 > JavaScript

js实现滚动条

2026-01-30 09:44:13JavaScript

监听滚动事件

通过 window.addEventListener('scroll', callback) 监听页面滚动事件。回调函数中可获取当前滚动位置 window.scrollY(垂直方向)或 window.scrollX(水平方向)。

window.addEventListener('scroll', () => {
  console.log('当前垂直滚动位置:', window.scrollY);
});

平滑滚动到指定位置

使用 window.scrollTo() 方法实现滚动,通过 behavior: 'smooth' 启用平滑动画效果。

js实现滚动条

// 滚动到页面顶部
window.scrollTo({
  top: 0,
  behavior: 'smooth'
});

// 滚动到特定元素
document.getElementById('target').scrollIntoView({
  behavior: 'smooth'
});

自定义滚动条样式

通过 CSS 修改滚动条外观,适用于 WebKit 内核浏览器(Chrome、Edge、Safari)。

/* 垂直滚动条 */
::-webkit-scrollbar {
  width: 8px;
}
::-webkit-scrollbar-track {
  background: #f1f1f1;
}
::-webkit-scrollbar-thumb {
  background: #888;
  border-radius: 4px;
}

禁止页面滚动

通过 document.body.style.overflow = 'hidden' 临时禁止页面滚动,常用于弹窗出现时。

js实现滚动条

// 禁止滚动
document.body.style.overflow = 'hidden';

// 恢复滚动
document.body.style.overflow = '';

获取元素滚动位置

使用 element.scrollTopelement.scrollLeft 获取容器内滚动位置,适用于 div 等可滚动元素。

const div = document.querySelector('.scrollable-div');
console.log('垂直滚动位置:', div.scrollTop);

滚动事件节流优化

高频滚动事件可能影响性能,通过 setTimeoutrequestAnimationFrame 节流处理。

let ticking = false;
window.addEventListener('scroll', () => {
  if (!ticking) {
    requestAnimationFrame(() => {
      // 执行实际逻辑
      ticking = false;
    });
    ticking = true;
  }
});

标签: 滚动条js
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 //…

js实现轮播图

js实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Pro…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…