如何進行平滑過渡當鼠標進入或離開盒子區域時,我會得到一個代碼,但是當我的鼠標從盒子區域出來並從另一側進入盒子時,元素轉換不平滑。如何使鼠標懸停平穩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意味着,現在,如果你慢慢移動你的鼠標,你可以看到翻譯/旋轉越來越少跳更新,但他/她想要更順利,我認爲你的限制因素是如何經常發生 –