可通过五种方式禁用 safari 平滑滚动:一、系统设置中关闭辅助功能里的“使用平滑滚动”;二、通过用户样式表覆盖 css 的 scroll-behavior 和 -webkit-overflow-scrolling;三、安装扩展程序拦截 smooth 滚动脚本;四、终端命令禁用 webkit 相关渲染标志;五、开发者工具控制台劫持 scrollintoview api。

如果您在 Safari 浏览器中启用或默认启用了平滑滚动效果,但希望禁用该行为以获得更直接、无惯性、无延迟的鼠标滚轮响应,可采用以下多种方式实现。这些方法分别作用于系统级、浏览器级及网页级,适用于不同使用场景。
一、关闭 macOS 系统级平滑滚动
macOS 全局启用了“平滑滚动”动画效果,该设置会影响 Safari 及所有原生应用的滚动行为。禁用后,鼠标滚轮将变为即时位移式滚动,无缓动与惯性。
1、点击屏幕左上角苹果菜单,选择“系统设置”。
2、在左侧边栏点击“辅助功能”,再点击右侧的“指针控制”。
3、向下滚动至“鼠标与触控板”区域,点击“触控板选项…”或“鼠标选项…”(依设备而定)。
4、取消勾选“使用平滑滚动”复选框。
二、禁用 Safari 浏览器内平滑滚动 CSS 行为
网页可通过 -webkit-overflow-scrolling: touch 或 scroll-behavior: smooth 主动触发 Safari 的平滑滚动逻辑。若网页已加载此类样式,可在浏览器端覆盖其效果。
1、在 Safari 地址栏输入 about:config(不支持,Safari 无此页面)——故需改用用户样式表方式。
2、打开Safari 偏好设置 → “高级” → 勾选“在菜单栏中显示‘开发’菜单”。
3、点击顶部菜单栏“开发” → “用户样式表” → “编辑用户样式表…”。
4、在打开的 CSS 文件中添加以下规则并保存:
* { scroll-behavior: auto !important; }
body, html { -webkit-overflow-scrolling: auto !important; }
5、重启 Safari 生效。
三、通过扩展程序屏蔽网页平滑滚动脚本
部分网站通过 JavaScript 动态调用 element.scrollIntoView({ behavior: 'smooth' }) 或监听 wheel 事件实现自定义平滑滚动。扩展可拦截并重写该行为。
1、访问 Safari 扩展库或 Mac App Store,安装支持内容脚本注入的扩展,例如“Stop The Smooth Scroll”或“Scroll Blocker”(需确认兼容 Safari 17+)。
规划您的迪拜之旅 — 哈利法塔观景、沙漠探险、迪拜购物中心购物、棕榈岛度假村及黄金市场砍价。还提供支持...
2、安装后点击 Safari 工具栏扩展图标,确保其状态为“启用”。
3、在扩展设置中勾选“禁用所有 scrollIntoView smooth 行为”和“阻止 wheel 事件平滑处理”选项。
四、使用终端命令禁用 WebKit 渲染层平滑滚动
WebKit 内部存在实验性渲染标志,可强制关闭滚动动画合成路径。该操作影响当前用户下所有基于 WebKit 的应用(含 Safari),需谨慎执行。
1、打开“终端”应用。
2、输入以下命令并回车(无需 sudo):
defaults write com.apple.Safari WebKitCustomizeSmoothScrollingEnabled -bool false
3、再执行:
defaults write com.apple.Safari WebKitScrollAnimationEnabled -bool false
4、完全退出 Safari(右键 Dock 图标 → “退出”),然后重新启动。
五、JavaScript 运行时劫持滚动 API(仅限开发者调试)
当需临时验证某网页是否因 JS 平滑滚动导致体验异常时,可在 Safari 开发者工具控制台中运行覆盖脚本,直接重写原生滚动方法。
1、在目标网页按Option + Command + I打开开发者工具。
2、切换至“控制台”标签页。
3、粘贴并执行以下代码:
Object.defineProperty(HTMLElement.prototype,'scrollIntoView',{value:function(opts){if(opts&&opts.behavior==='smooth')opts.behavior='auto';return this.scrollIntoView.call(this,opts);},writable:true,configurable:true});
4、刷新页面后,所有 scrollIntoView({ behavior: 'smooth' }) 调用将自动降级为 auto 行为。










