前言
我刚开始使用 javascript 进行编程,目前正在开发我的这个爱好网站项目。该站点应该显示充满产品图像的页面,而不是可以“平移”到左侧或右侧。每个“页面”包含大约 24 张中等大小的图片,一页几乎完全填满了整个屏幕。当用户选择查看下一页时,他需要单击'n'向左拖动(例如)以让新页面(通过 AJAX 脚本动态加载)滑入视图。
问题
这需要我的 javascript 以屏幕宽度同步“滑动”其中两个提到的页面。这导致帧率非常低。Firefox 和 Opera 有点滞后,Chrome 尤其糟糕:1 帧动画大约需要 1 帧。100 毫秒,从而使动画看起来很“滞后”。
我不使用 jQuery,也不想使用它或任何其他库来“为我工作”。至少在我确定我正在尝试做的事情不能用几行自写的代码来完成之前是这样。
到目前为止,我已经发现我操作 DOM 的特定方式会导致性能下降。例程如下所示:
function slide() {
this.t = new Date().getTime() - this.msBase;
if( this.t > this.msDura ) {
this.callB.call(this.ref,this.nFrames);
return false;
}
//calculating the displacement of both elements
this.pxProg = this.tRatio * this.t;
this.eA.style.left = ( this.pxBaseA + this.pxProg ) + 'px';
this.eB.style.left = (this.pxBaseB + this.pxProg) + 'px';
if ( bRequestAnimationStatus )
requestAnimationFrame( slide.bind(this) );
else
window.setTimeout( slide.bind(this), 16 );
this.nFrames++;
}
//starting an animation
slide.call({
eA: theMiddlePage,
eB: neighboorPage,
callB: theCallback,
msBase: new Date().getTime(),
msDura: 400,
tRatio: ((0-pxScreenWidth)/400),
nFrames: 0,
ref: myObject,
pxBaseA: theMiddlePage.offsetLeft,
pxBaseB: neighboorPage.offsetLeft
});
问题
我注意到当我让 AJAX 脚本在每个页面中加载更少的图像时,动画变得更快。单独的图像似乎比我预期的要产生更多的开销。
还有另一种方法可以做到这一点吗?