Html 在容器中设置div绝对位置动画的有效方法

Html 在容器中设置div绝对位置动画的有效方法,html,css,optimization,animation,css-position,Html,Css,Optimization,Animation,Css Position,我目前正在一个网站上工作,这个网站可以动态地构建一个由小积木组成的“城市”。建筑物和城市道具都使用“位置:绝对”和“左”进行定位。它们都位于一个容器div(也带有“position:absolute”)上,而容器div又位于另一个div(带有“position:relative”)上,该div使用“overflow:hidden”限制可见部分。为了定位用户摄像机,我更新了container div的“left”CSS属性,有效地将内容向左或向右移动。到目前为止,一切顺利 问题是,在功能较差的浏览

我目前正在一个网站上工作,这个网站可以动态地构建一个由小积木组成的“城市”。建筑物和城市道具都使用“位置:绝对”和“左”进行定位。它们都位于一个容器div(也带有“position:absolute”)上,而容器div又位于另一个div(带有“position:relative”)上,该div使用“overflow:hidden”限制可见部分。为了定位用户摄像机,我更新了container div的“left”CSS属性,有效地将内容向左或向右移动。到目前为止,一切顺利

问题是,在功能较差的浏览器和机器上,动画速度非常慢。我目前正在使用一个30毫秒的计时器,它将调用一个tick函数,这个tick函数将处理用户输入,计算新的left并相应地更新CSS。这自然会导致几次浏览器回流,有时动画看起来非常缓慢

您可以在这里查看:

剧本:

有人对我如何优化这个有什么建议吗?

使用

这将允许你完成你想要的,而且它可能比你目前拥有的更好

更新:这是我的

希望有帮助。

使用

这将允许你完成你想要的,而且它可能比你目前拥有的更好

更新:这是我的


希望能有所帮助。

我最终优化了它,将绝对定位替换为滚动定位,并在Mozilla和Webkit上使用requestAnimationFrame技巧来提高帧速率性能。以下是对遇到此问题的人的一些提示:

关于requestAnimationFrame()函数(功能强大的浏览器上的高效异步动画):

获取和更新jQuery中div的滚动位置:

我最终优化了它,将绝对定位替换为滚动定位,并在Mozilla和Webkit上使用requestAnimationFrame技巧来提高帧速率性能。以下是对遇到此问题的人的一些提示:

关于requestAnimationFrame()函数(功能强大的浏览器上的高效异步动画):

获取和更新jQuery中div的滚动位置:

问题是:我需要相机向左或向右移动,只要鼠标在箭头按钮上,或者用户按下左键或右键。你可以使用
jQuery.animate
,它也允许你停止动画,你可以在
:hover
事件上添加
.animate()
(首先检查它是否未运行),然后
.stop()
当失去焦点时::hover事件仅在鼠标结束时触发一次。我需要相机在鼠标结束时一直移动,然后在鼠标离开时平稳停止。此外,如果我在jQuery.animate上使用:hover选择器,这意味着我想为被悬停的元素设置动画,而这不是例如,在
:悬停
上,您将
设置动画
(如果它不是
:设置动画
),异步启动动画。然后,当它失去焦点时,您将
停止()
。我将尝试使用一个示例进行更新。问题是,在您的示例中,动画只执行一次。在我的示例中,只要光标停留在左箭头上,相机就需要继续向左移动。不过,感谢您的提示!问题是:只要鼠标停留在左箭头上,我就需要相机向左或向右移动箭头按钮或用户正在按左键或右键。您可以使用
jQuery.animate
,它也允许您停止动画,您可以在
:hover
事件上添加
.animate()
(首先检查它是否未运行),然后添加
.stop()
当失去焦点时::hover事件仅在鼠标结束时触发一次。我需要相机在鼠标结束时一直移动,然后在鼠标离开时平稳停止。此外,如果我在jQuery.animate上使用:hover选择器,这意味着我想为被悬停的元素设置动画,而这不是例如,在
:悬停
上,您将
设置动画
(如果它不是
:设置动画
),异步启动动画。然后,当它失去焦点时,您将
停止()
。我将尝试用一个示例进行更新。问题是,在您的示例中,动画只执行一次。在我的示例中,只要光标停留在左箭头上,相机就需要继续向左移动。不过,感谢您的提示!