当前位置: 首页 > 知识库问答 >
问题:

前端 - 为什么这个动画一直在抖动?

刘琨
2024-08-29

demo
为什么这个动画一直在抖动?

共有4个答案

闻人宏盛
2024-08-29

我赞同@kakao 的说法。一种解决方法是用transform属性来替代left属性避免触发重新布局

.sample {
  transform: translateX(0);
  background: red;
  position: absolute;
  left: 0px;
  width: 100px;
  height: 100px;
  transition-property: transform;
  transition-duration: 0.5s;
  transition-timing-function: ease
}
.sample:hover {
  transform: translateX(420px);
}
方波娃
2024-08-29

悬停后向右移动,但是在移动的某个时刻鼠标没有悬停在元素内了,然后元素要移动回到原状态,移动回到原状态的过程中鼠标又悬停在元素内了

太叔永新
2024-08-29

因为动画生效的时候,元素移动导致 hover 状态没了,left 变成 0,元素往回移动了,移动到鼠标位置,动画又生效了。所以就抖动了

段干华晖
2024-08-29

这个动画抖动的原因可能是由于几个因素导致的,但根据提供的 CodePen 示例 来看,主要问题很可能是由于 CSS 动画的 transform 属性与浏览器的重绘(repaint)和回流(reflow)过程之间的冲突。具体来说,以下几点可能是导致抖动的原因:

  1. 高频率的动画更新:如果动画的更新频率过高(例如,使用了非常短的 animation-duration 和/或 animation-iteration-count 设置为 infinite),且每次更新都触发了浏览器的重绘或回流,那么这可能会导致性能问题,进而产生抖动。
  2. transform 属性的使用:虽然 transform 通常是 GPU 加速的,但在某些情况下,如果它与其他可能触发重绘的属性(如 widthheightmargin 等)一起使用时,可能会导致性能问题。在你的示例中,虽然 transform 是主要的动画属性,但检查是否有其他 CSS 属性在动画过程中被修改也很重要。
  3. 浏览器兼容性:不同的浏览器对 CSS 动画的处理可能有所不同,这可能导致在某些浏览器中动画表现正常,而在其他浏览器中则出现抖动。
  4. 硬件加速限制:尽管现代浏览器普遍支持硬件加速,但仍然存在一些限制。如果动画过于复杂或超出了硬件加速的处理能力,就可能出现性能问题。

解决方案

  • 优化动画频率:减少动画的更新频率,例如增加 animation-duration,或尝试使用 requestAnimationFrame 而不是 CSS 动画来控制动画的帧率。
  • 避免不必要的重绘和回流:确保在动画过程中不修改可能触发重绘或回流的 CSS 属性。
  • 检查浏览器兼容性:在不同的浏览器中测试动画,以确定是否存在特定的浏览器问题。
  • 简化动画:如果可能,尝试简化动画的复杂度,以减少对硬件加速的依赖。

针对你提供的具体示例,由于动画较为简单且主要依赖于 transform,问题可能不在于 transform 本身,而是可能与动画的持续时间、迭代次数或与其他 CSS 属性的交互有关。建议从调整这些参数开始,看看是否能解决问题。

 类似资料:
  • 1面: 分片上传原理(计算文件标识如何优化,只取头尾和中间的分片内容计算hash),整个过程中还有什么可优化的点(http2 cdn)说一下http2有什么特点,服务器主动推送可以用在什么场景(聊天室,股票,公众号消息推送?),hpack算法说一下。 service worker和webworker说一下,有没有了解过pwm,还有没有了解什么最新的前端技术(说了一下rust) vite和webpa

  • 问题内容: 所以我运行代码,它就开始不正常了。我不熟悉pygame。 代码如下: 这张图片并不是我不能发布视频的那个,但它确实是我的代码的作用 问题答案: 问题是由多次调用 . 在应用程序循环结束时更新显示就足够了。 多次调用or原因 忽隐忽现。 删除对的所有呼叫从你的代码,但调用一次 在应用程序循环结束时: 如果在之后更新显示,将显示在短时间内填充了背景色。然后玩家被抽中 ()显示时,播放器位于

  • 7.23一面 今天中午问了hr后约的二面 自我介绍 项目介绍(基本都在问项目) 微前端原理 服务端渲染SSR原理,优缺点等等 项目中移动端,PC端适配方案(移动端REM原理) REM缺点 暗夜模式怎么实现的(优化) 然后就是很多项目中的内容怎么实现的。。 对混合开发(JSBridge)的了解,在行业中自己的理解 对混合开发性能上的优化(没有。。就答了传统的前端优化) 有没有尝试过离线化,有没有性能

  • 实在是不知道哪里错了? 解决了,但是这样写不是一样的吗? 解构出来就不提示key重复了,不知道为啥

  • 理解不了虚拟dom想学个没有虚拟dom的,文档还是一如既往的半汉化

  • 这个背景图应该顶到最左边去才对,为什么没有过去?图片格式是svg,我在想是不是svg的原因?有无大佬讲解一下原理。 图片本身左边没有空隙,所以不是图片内容的问题。

  • 线上出现这种问题的,过了一会就好了

  • 字节跳动直播团队后端开发一面 自我介绍 项目架构,难点,一致性问题,资金安全怎么保障? CPP11 新特性?常用什么? 右值怎么理解?move 有什么用?怎么和右值结合使用?常见使用场景? 有什么智能指针?都解决了什么问题?怎么自己实现一个 shared_ptr? 进程、线程和协程是什么?有什么区别?什么场景适合? IO 多路复用怎么理解?怎么实现?select、poll 和 epoll 的区别?