【发布时间】:2011-12-24 22:36:57
【问题描述】:
我最近开始了一个新项目,这是一本 CSS3/jQuery 翻书(点击翻页,或点击并拖动右侧页面)。
查看live here 或play with the fiddle
问题:
如何提高页面拖拽速度?
在 Chrome 和 Safari 中似乎还可以,但在 Firefox 中速度较慢/“steppy”,在 Opera 中非常糟糕(在 Mac OS X Snow Leopard 上的最新版本中测试)
顺便说一句..我仍在清理代码/我尝试删除旋转,但它似乎没有改变任何东西。
我也有一些测试人员抱怨 Chrome/mac 上的性能(对我来说似乎“还可以”)..
感谢任何帮助/批评/提示。
这是移动页面的代码(完整代码请参见小提琴)
function startMove() {
$('#flipwrap.movable').on('mousemove', function(e) {
e.preventDefault();
thisX = parseFloat((e.pageX - offsetX - 190), 10);
thisY = parseFloat((e.pageY - offsetY - 270), 10);
positionX = parseFloat((((thisX - 55) * -1) + 310), 10);
positionY = parseFloat(((thisY + 100) / 10), 10);
rotateZ = parseFloat((((positionX - 350) * positionY) / 900).toFixed(2) * -1, 10);
if ($('.page.flipit').hasClass('movable')) {
$('.page.flipit').stop(true, true);
$('.page.removeit').stop(true, true);
$('.page.flipit').removeClass('css-animation').css({
width: 116 - thisX / 2.1,
height: 345 - thisX / 8,
top: -13 + thisX / 16,
left: thisX + 155
});
$('.page.flipit').css('-webkit-transform', 'rotate(' + rotateZ + 'deg) ').css('-o-transform', 'rotate(' + rotateZ + 'deg) ').css('-moz-transform', 'rotate(' + rotateZ + 'deg) ');
console.log(' pX = ' + positionX + ' pY = ' + positionY + ' rZ = ' + rotateZ + ' tX = ' + thisX + ' tY = ' + thisY);
$('.page.removeit').css({
width: 40 + thisX / 1.6
});
}
});
}
【问题讨论】:
-
不得不说它在 Chrome 中对我来说也相当笨重(最新版本,Win7)。不过,除此之外它看起来还不错。
-
也许你可以把它和原来的 jsfiddle.net/pixelass/PXZwf/3 比较一下,它使用 translate 来定位..(在这个例子中,mouseup 上的动画......等完全关闭)......这只是关于动画拖动时卷曲/拖动部分的平滑度