edge 浏览器中 停顿是预期行为,因其已被 chromium 内核弃用,仅在 ie 模式下模拟且不可靠;应改用 css transform: translatex() 动画替代,配合 overflow: hidden 和 linear 时序确保匀速流畅。

Edge 浏览器里 <marquee></marquee> 停顿是预期行为,不是 bug
新版 Edge(基于 Chromium)已完全弃用 <marquee></marquee> 标签,它只在 IE 模式(Document Mode)下模拟运行,且行为不可靠:滚动会卡顿、暂停、跳帧,甚至不触发 onfinish。这不是配置问题,而是该标签本身已被 W3C 废弃,Chromium 内核(包括 Edge)不实现其原生动画逻辑。
用 CSS animation 替代 <marquee></marquee> 最稳妥
CSS 动画兼容性好、性能高、无 JS 依赖,适合纯滚动文字场景。关键点在于用 transform: translateX() 配合 infinite 动画,避免重排。
- 必须设置父容器
overflow: hidden,否则文字溢出可见 - 动画时长需根据文字长度和容器宽度动态计算,硬写
10s容易快慢失衡 - 用
linear而非ease,保证匀速滚动 - 示例片段:
.marquee { white-space: nowrap; overflow: hidden; } .marquee span { display: inline-block; animation: scroll-left 20s linear infinite; } @keyframes scroll-left { 0% { transform: translateX(100%); } 100% { transform: translateX(-100%); } }
JS 驱动滚动要防 requestAnimationFrame 节流失效
若需动态控制(如暂停/加速/内容更新),用 JS + requestAnimationFrame 比 setTimeout 更可靠,但 Edge 下仍有陷阱:
- 不要直接修改
element.style.left—— 触发重排,卡顿明显 - 改用
element.style.transform = 'translateX(' + x + 'px)' - 监听
visibilitychange事件,在页面隐藏时暂停动画循环,否则后台 tab 仍耗 CPU - Edge 对
getComputedStyle的返回值有时带小数精度误差,做位置判断时建议用Math.round()归一
别忽略字体渲染差异导致的“视觉停顿”
同一段 CSS 动画,在 Edge 和 Chrome 中看起来速度不同,常因字体子像素抗锯齿策略不一致。尤其使用非系统默认字体(如 font-family: 'PingFang SC', sans-serif)时,Edge 可能延迟绘制某几帧。
立即学习“前端免费学习笔记(深入)”;
- 加
will-change: transform提前告知合成层,减少光栅化抖动 - 避免在滚动元素上设
text-shadow或filter,这些在 Edge 中开销极大 - 真遇到卡顿,可临时降级为每帧移动 2px 而非 1px,肉眼几乎无差别,但帧率更稳
will-change 就解决了。











