【发布时间】:2014-02-12 03:25:03
【问题描述】:
我正在尝试在此页面上制作 3D 图层效果: 示例页面: http://cloudraiders.com/
我几乎做了所有事情,但有一个无法处理的大问题:
$("#mainView").mousemove(function( event ) {
//getting mouse dimentions
var pageX = event.pageX;
var pageY = event.pageY;
var mainWidth = $(this).width();
var mainHeight = $(this).height();
//
//console.log(pageX);
("#mainView").find("li").each(function( index ) {
var depth = $(this).attr("dataDepth");
var scalable = $(this).attr("scalable");
var x = pageX*depth;
var y = pageY*depth;
var z = 0;
var thisScale = mainWidth / mainHeight * 1;
//setting accelerated webkit transform
$(this).css("-webkit-transform", "translate3d("+x+"%,"+y+"%,"+z+"px"+")");
});
});
问题是 translate3d 不像示例页面那样平滑。它在跳跃。 当我将鼠标移出窗口,然后在不同的地方进入时,它只是在跳跃。
我已经在论坛中找到了一些解决方案,但鼠标移动效果不佳。 任何帮助将不胜感激。
问候!
编辑: 我用过 Jquery 动画函数:
$(this).animate({ whyNotToUseANonExistingProperty: 100 }, {
step: function(now,fx) {
$(this).css('-webkit-transform',"translate3d("+x+"%,"+y+"%,"+z+"px"+")");
},
duration:100
},'linear');
它几乎工作得很好,但问题是,Jquery 正在堆叠查询。如果我将鼠标移动很多,动画会持续几分钟。
【问题讨论】:
-
如果鼠标移出/移入,您的脚本不会“平滑”过渡。将值保留在某些变量中并尝试逐步从旧移到新。另外,transition: all...它可能不起作用,您使用的是 3d 过渡,而不是 2d。
标签: javascript jquery css