利用JavaScript制作一个酷炫的3D图片演示
// 滚轮滚动
// 监听鼠标滚轮事件,该函数不用调用直接生效
document.onmousewheel = function(e){
// console.log(e)
e = e || window.event
var d = e.wheelDelta / 10 || -e.detail
radius += d
init(1)
}
var sX,sY,nX,nY,desX = 0 , desY = 0, tX = 0,tY = 0;
// 鼠标拖动页面
document.onpointerdown = function(e){
// console.log(e);
e = e || window.event//防止出错,如果e不存在,则让window.event为e
var sX = e.clientX,
sY = e.clientY
//监听鼠标移动函数
this.onpointermove = function(e){
console.log(e);
e = e || window.event//防止出错,如果e不存在,则让window.event为e
var nX = e.clientX,
nY = e.clientY;
desX = nX - sX;//在x轴上滑动的距离
desY = nY - sY;
tX += desX * 0.1
tY += desY * 0.1
// 让页面跟着鼠标动起来
applyTransform(oDarg)
}
this.onpointerup = function(e){
//每个多久实现一次setInterval
oDarg.timer = setInterval(function(){
desX *= 0.95
desY *= 0.95
tX += desX * 0.1
tY += desY * 0.1
applyTransform(oDarg)
playSpin(false)
if(Math.abs(desX) < 0.5 && Math.abs(desY) < 0.5){
clearInterval(oDarg.timer)
playSpin(true)
}
},17)
this.onpointermove = this.onpointerup = null
}
return false
}
function applyTransform(obj){
if(tY > 180)tY = 180
if(tY < 0)tY = 0
obj.style.transform = `rotateX(${-tY}deg) rotateY(${tX}deg)`
}
function playSpin(yes){
oSpin.style.animationPlayState = (yes ? 'running' : 'paused')
}