滚动行为属性

最后更新:2026-09-13

scroll-behavior 滚动行为属性

scroll-behavior 用于控制滚动容器内的滚动跳转是瞬时完成还是平滑过渡。当设置为 smooth 时,点击锚点链接或使用 JavaScript 滚动时,页面会平滑地滚动到目标位置,而不是瞬间跳转,能显著提升用户体验。

分类
初始值auto
继承
适用于
可动画
CSS 版本CSS3
状态标准

📝 语法

scroll-behavior: auto | smooth;

⚙️ 取值

类型描述
auto | smooth关键字滚动行为

▶ 示例

编辑下方代码,在 playground 中查看实时效果:

🌐 浏览器支持

浏览器 ChromeChrome EdgeEdge FirefoxFirefox SafariSafari OperaOpera
scroll-behavior v57 v12 v52 v10.1 v44
所有主流浏览器均支持
提示: 通常将 scroll-behavior: smooth 设置在 html 或根滚动容器上,全局生效。
注意: 平滑滚动会尊重用户的 prefers-reduced-motion 无障碍设置;如果用户开启了「减少动画」,浏览器会自动忽略 smooth 值。

❓ 常见问题

Qscroll-behavior 对 window.scrollTo() 有效吗?
A有效。只要滚动容器设置了 scroll-behavior: smooth,window.scrollTo、scrollBy、scrollIntoView 的默认行为就是平滑滚动,也可在 JS 里显式传 { behavior: 'smooth' } 覆盖。注意锚点跳转发生在最近的滚动容器上。
Q为什么设置了 smooth 但没有效果?
A排查顺序:属性是否设置在真正滚动的容器上(页面级滚动是 html,内部滚动是 overflow 元素);是否被系统的 prefers-reduced-motion: reduce 覆盖(减少动画设置会强制忽略平滑);是否有 JS 以 behavior: 'auto' 覆盖了默认行为。
Qscroll-behavior: smooth 会影响性能吗?
A平滑滚动由浏览器原生实现,滚动在合成器线程完成,不阻塞主线程,性能开销很小。但滚动过程中如果触发了大量重排或重绘(如懒加载图片、监听 scroll 改样式),仍可能卡顿。建议避免在 scroll 事件中做昂贵操作,或用 passive 监听优化。
Qscroll-behavior 和 JS 实现的平滑滚动有什么区别?
Ascroll-behavior: smooth 由浏览器原生驱动,无需 JS、性能好、自动尊重 prefers-reduced-motion 设置;JS(如 requestAnimationFrame 手动滚动)可控性更强,能实现自定义缓动、滚动到指定偏移等,但代码量更大。能用 CSS 解决的场景优先用 CSS。

📚 相关教程

Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏