我正在使用-webkit-transform: translate(-958px, 0);
动画移动一个很长的图像
图像在开始水平移动后很快就被切断了,但是如果我稍微移动平板电脑屏幕,它会重新绘制屏幕并在平移时显示整个图像,而且也非常流畅。
但是我如何在代码中模拟呢?
我正在使用-webkit-transform: translate(-958px, 0);
动画移动一个很长的图像
图像在开始水平移动后很快就被切断了,但是如果我稍微移动平板电脑屏幕,它会重新绘制屏幕并在平移时显示整个图像,而且也非常流畅。
但是我如何在代码中模拟呢?
一些建议:
回到问题:
translate3d
会获得更好的性能,因为它不起作用,主要瓶颈在其他地方。根据我使用移动 webkit 的经验,当有大图像(在大小或尺寸方面)时,您可能会遇到麻烦:
如果您的 UI 触发的重绘会平滑所有内容,则延迟可能是由图像加载和渲染引起的
解决方案:
animation-delay
通过或为您的动画设置合理的延迟setTimeout
对于 2 和 3,代码将如下所示:
$("<img>")
.attr({ src: " /* image url */ " })
.load(function(){
/* i. use class or animationName to set animation */
/* ii. force redraw go there if needed */
/* wrap i & ii into a setTimeout function inside this callback
if more delay is needed */
})
祝你好运。
Paul Irish 的这段代码和博客文章可能对您有所帮助:
http://paulirish.com/2011/requestanimationframe-for-smart-animating/
如果它漂浮你的船,它几乎是跨浏览器。
如果我没有正确阅读您的问题,请原谅我。
您是否打算使用平板电脑的陀螺仪平移大图像?这在代码中应该是可能的。
但是,据我所知,强制过渡以更快地更新是开发人员无法控制的。您能做的最好的事情就是确保这就是平板电脑所需要担心的。
<!DOCTYPE html>
<html>
<head>
<style>
body {
padding:0px;
overflow:hidden;
}
#img {
position:absolute;
left:0px;
top:20px;
-webkit-transition:left 0.5s;
}
</style>
</head>
<body>
<img id="img" src="img.png" />
</body>
<script>
function onOrientationChange(e) {
var img = document.getElementById("img");
var maxWidth = img.clientWidth - document.body.clientWidth;
img.style.left = ((e.gamma-90) * maxWidth / 180 ) + "px";
}
window.addEventListener('deviceorientation', function(e){onOrientationChange(e)}, true);
</script>
</html>
您是否尝试过使用 translate 3d?GPU在使用时启动。