文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-29 10:41

关注

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

一、页面特效效果展示

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

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

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

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

二、功能描述

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

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

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

三、功能实现

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

代码如下(html):

 <div id="darg-container" class="darg">      <!-- 父容器,相当于把所有图片都放在一起 -->    <div id="spin-container">      <img src="1.jpg" alt="">      <img src="2.jpg" alt="">      <img src="3.jpg" alt="">      <img src="4.jpg" alt="">      <img src="5.jpg" alt="">      <img src="6.jpg" alt="">      <img src="8.jpg" alt="">                  <a target="_blank" href="7.jpg" rel="external nofollow" >        <img src="7.jpg" alt="">      </a>        <!-- <video controls autoplay="autoplay" loop>        <source src="8.jpg" type="video/mp4">      </video> -->      <p>3D Tiktok Carousel</p>    </div>    <div id="ground"></div>  </div>

给所有照片加上旋转动画

代码如下(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)

监听鼠标事件

代码如下(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图片”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯