如何进行平滑过渡当鼠标进入或离开盒子区域时,我会得到一个代码,但是当我的鼠标从盒子区域出来并从另一侧进入盒子时,元素转换不平滑。如何使鼠标悬停平稳rotate3d?
代码:fiddle
$(document).ready(function() {
var $one = $('#div1'),
$two = $('#div2'),
browserPrefix = "",
usrAg = navigator.userAgent;
if(usrAg.indexOf("Chrome") > -1 || usrAg.indexOf("Safari") > -1) {
browserPrefix = "-webkit-";
} else if (usrAg.indexOf("Opera") > -1) {
browserPrefix = "-o";
} else if (usrAg.indexOf("Firefox") > -1) {
browserPrefix = "-moz-";
} else if (usrAg.indexOf("MSIE") > -1) {
browserPrefix = "-ms-";
}
$(document).mousemove(function (event) {
var cx = Math.ceil(window.innerWidth/2.0),
cy = Math.ceil(window.innerHeight/2.0),
dx = event.pageX - cx,
dy = event.pageY - cy,
tiltx = (dy/cy),
tilty = - (dx/cx),
radius = Math.sqrt(Math.pow(tiltx, 2) + Math.pow(tilty, 2)),
degree = (radius * 15);
shadx = degree*tiltx; /*horizontal shadow*/
shady = degree*tilty; /*vertical shadow*/
$one.css(browserPrefix + 'transform', 'rotate3d(' + tiltx + ', ' + tilty + ', 0, ' + degree + 'deg)');
$two.css(browserPrefix + 'transform', 'rotate3d(' + tiltx + ', ' + tilty + ', 0, ' + degree + 'deg)');
if(dx>cx) /*without that horizontal values are reversed*/
$('#div1, #div2').css('box-shadow', + (-shady) + 'px ' + (-shadx) +'px 5px #3D352A');
else $('#div1, #div2').css('box-shadow', + shady + 'px ' + (-shadx) +'px 5px #3D352A');
});});
你的小提琴似乎完好(在Chrome);我无法看到你描述的问题。 由于mousemove正确连接到文档应该没有任何问题。除非你正在测试一些劣质的浏览器。 – Ingmars
我在Chrome和Firefox上测试过,它的工作原理,你能澄清你想要做什么吗? – Mimouni
我觉得OP意味着,现在,如果你慢慢移动你的鼠标,你可以看到翻译/旋转越来越少跳更新,但他/她想要更顺利,我认为你的限制因素是如何经常发生 –