千家信息网

如何利用JavaScript制作一个酷炫的3D图片

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章将为大家详细讲解有关如何利用JavaScript制作一个酷炫的3D图片,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、页面特效效果展示注:上述效果图只是部
千家信息网最后更新 2024年11月23日如何利用JavaScript制作一个酷炫的3D图片

这篇文章将为大家详细讲解有关如何利用JavaScript制作一个酷炫的3D图片,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

一、页面特效效果展示

注:上述效果图只是部分效果,原谅我还没有学会自制gif图!

二、功能描述

1、打开页面,所有图片会自动转动

2、图片的大小和间隔可随鼠标滚轮滚动而改变

3、鼠标按住页面任意位置,拖动光标,页面可随之旋转

三、功能实现

1.创建一个父容器,将所有照片叠放在一起

代码如下(html):

 

3D Tiktok Carousel

2.给所有照片加上旋转动画

代码如下(js):

function init(delayTime) {  // 给所有的图片加动画  for (var i = 0; i < aEle.length; i++) {    aEle[i].style.transform = "rotateY(" + (i * (360 / aEle.length)) + "deg) translateZ(" + radius + "px)"    aEle[i].style.transition = "transform 1s"    aEle[i].style.transitionDelay = delayTime || (aEle.length - i) / 4 + 's'  }}setTimeout(init, 1000)

3.监听鼠标事件

代码如下(js):

// 滚轮滚动// 监听鼠标滚轮事件,该函数不用调用直接生效_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')}

关于"如何利用JavaScript制作一个酷炫的3D图片"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0