【发布时间】:2021-04-12 23:25:25
【问题描述】:
我在这里写了这个脚本:https://jsfiddle.net/g130hqv4/2/
这是应该发生的: 我在页面上移动光标,页面中间的 div 稍微跟随光标的位置并旋转到那个方向。 (另见屏幕截图。)
Screenshot-1: Cursor is in the middle of the page:
Screenshot-2: Cursor is in the upper left corner:
当我在做这个时,我使用了 Safari,现在我意识到它只适用于 Safari,我还测试了 Opera 和 Chrome,并且 div 可以按预期移动,但它不会旋转。我虽然问题必须是:CSS3 3D Transforms,或者:perspective: 500;,但我检查了 CanIUse.com 并且都支持,这是怎么回事?
–––––––––––
这是我的 JS:
var overlayDiv = document.querySelector(".hello");
var moveDivMaxX = undefined;
var moveDivMaxY = undefined;
var viewport_center = {
x: undefined,
y: undefined
};
var mouse = {
x: undefined,
y: undefined
};
var differenceX = undefined;
var differenceY = undefined;
var moveDivX = undefined;
var moveDivY = undefined;
// tilt START
var tiltX = undefined;
var titlY = undefined;
var MaxTiltX = 10;
var MaxTitlY = 10;
//tilt END
function load() {
moveDivMaxX = window.innerWidth * 0.08;
moveDivMaxY = window.innerHeight * 0.08;
viewport_center.x = window.innerWidth / 2;
viewport_center.y = window.innerHeight / 2;
}
window.addEventListener('mousemove', function(e) {
mouse.x = e.x;
mouse.y = e.y;
differenceX = viewport_center.x - mouse.x;
differenceX = differenceX * -1;
differenceY = viewport_center.y - mouse.y;
differenceY = differenceY * -1;
var moveDivXinPercent = differenceX * 100 / viewport_center.x;
moveDivX = moveDivMaxX / 100 * moveDivXinPercent;
var moveDivYinPercent = differenceY * 100 / viewport_center.y;
moveDivY = moveDivMaxY / 100 * moveDivYinPercent;
var centerDivX = viewport_center.x - (document.querySelector(".hello").clientWidth / 2);
var centerDivY = viewport_center.y - (document.querySelector(".hello").clientHeight / 2);
overlayDiv.style.left = centerDivX + moveDivX + "px";
overlayDiv.style.top = centerDivY + moveDivY + "px";
// Tilt hello START
tiltX = MaxTiltX / 100 * moveDivYinPercent * -1;
titlY = MaxTitlY / 100 * moveDivXinPercent;
overlayDiv.style.transform = "rotateX(" + tiltX + "deg) rotateY(" + titlY + "deg)";
// Tilt hello END
})
window.onresize = load;
load();
【问题讨论】:
-
该代码似乎也适用于 FF。只是旋转的变化很小,很难看到。如果您将
tiltX和titlY相乘,例如。 5,然后可以更好地看到旋转。为什么/如何旋转在 Safari 中更大,我不能说,因为我手头没有 Safari 可供测试。 -
@Teemu 感谢您提供这些信息!我刚刚想通了,这对我有帮助。 :)
标签: javascript css cross-browser