js实现3D旋转相册


Posted in Javascript onAugust 02, 2020

本文实例为大家分享了js实现3D旋转相册的具体代码,供大家参考,具体内容如下

效果展示:

js实现3D旋转相册

使用图片:

js实现3D旋转相册js实现3D旋转相册

剩余自己随意 图片大小为133*200

代码展示:

<!DOCTYPE html>
<!--设置图片的拖拽事件 不可用-->
<html lang="en" ondragstart="return false">
<head>
 <meta charset="UTF-8">
 <title>3D效果</title>
 <style>
  * {
   background-color: #000;
 
  }
 
  .container {
   border: 1px solid yellow;
   perspective: 800px;
   overflow: hidden;
  }
 
  .box {
   position: relative;
   border: 1px solid #f00;
   width: 133px;
   height: 200px;
   margin: 300px auto;
   transform-style: preserve-3d;
   transform:rotateX(-20deg) rotateY(0deg);
  }
 
  img {
   position: absolute;
   /*设置图片倒影效果*/
   -webkit-box-reflect:below 5px -webkit-gradient(linear,left top, left bottom,from( transparent),color-stop(40%,transparent),to(rgba(250,250,250,0.4)));
  }
 
 </style>
</head>
<body>
<div class="container">
 <div class="box">
  <img src="img/1.jpg" alt="">
  <img src="img/2.jpg" alt="">
  <img src="img/3.jpg" alt="">
  <img src="img/4.jpg" alt="">
  <img src="img/5.jpg" alt="">
  <img src="img/6.jpg" alt="">
  <img src="img/7.jpg" alt="">
  <img src="img/8.jpg" alt="">
  <img src="img/9.jpg" alt="">
  <img src="img/10.jpg" alt="">
  <img src="img/11.jpg" alt="">
 </div>
</div>
 
<script>
 // a 获取所有 img 元素
  var mimg = document.querySelectorAll("img");
  var mlength = mimg.length;
 // 动态获取 图片的旋转角度
 var mdeg = 360/mlength;
 
 //获取box 容器
 var mbox = document.querySelector(".box");
 
 
 /*页面加载后执行。。效果*/
  window.onload= function () {
   // 1 图片旋转动画
   for(var i = 0;i<mlength;i++){
    // console.log(mimg);
    //每张图片 1 60 2 120 3 180 4 240  60为图片的平分角
    mimg[i].style.transform = "rotateY("+(mdeg*i)+"deg) translateZ(350px)";
   // 添加过渡效果  动画执行多长时间 多久后开始执行动画 此时的效果 从最后一张开始动画
   //  console.log(mlength-i);
    mimg[i].style.transition = "1s "+(mlength-i)*0.1+"s"; //  0.1 动画调节
    //从第一张开始动画
    // mimg[i].style.transition = "1s "+i+"s";
   }
 
 
  // 获取鼠标点的位置 获取 差值 改变 转换的rotate: x y
   var newX,newY,lastX,lastY,cvalueX,cvalueY, rotX=-20,rotY=0;
  // 鼠标滑动后改变效果 (使用鼠标 按下 替换点击事件)
   document.onmousedown = function (e) {
   // 鼠标点击
   //  console.log("点击");
    lastX = e.clientX;
    lastY = e.clientY;
   // 鼠标移动
    this.onmousemove = function (e) {
     // console.log("移动");
    newX = e.clientX;
    newY = e.clientY;
     console.log(newX +" "+newY);
 
     //获取移动的差值
     cvalueX = newX-lastX;
     cvalueY = newY-lastY;
 
     //获取旋转的角度
     rotX -= cvalueY; /*因为要向前运动所以是负值*/
     rotY += cvalueX;
 
    // 将角度添加上 img容器
     mbox.style.transform = "rotateX("+rotX*0.1+"deg) rotateY("+rotY*0.1+"deg)"
    // 差值太大(转动太快) 调节每次的差值是和上一次差 而不是之前差(初始值的差)
     lastX = newX;
     lastY = newY;
 
    }
   // 鼠标抬起
    this.onmouseup = function () {
     // console.log("抬起");
    // 要停止移动的方法
     this.onmousemove = null;
    }
 
   }
  }
 
</script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
从阿里妈妈发现的几个不错的表单验证函数
Sep 21 Javascript
通过实例理解javascript中没有函数重载的概念
Jun 03 Javascript
详解javascript的变量与标识符
Jan 04 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
Jul 07 Javascript
AngularJS基础 ng-srcset 指令简单示例
Aug 03 Javascript
基于JS实现网页中的选项卡(两种方法)
Jun 16 Javascript
关于jQuery里prev()的简单操作代码
Oct 27 jQuery
搭建基于express框架运行环境的方法步骤
Nov 15 Javascript
通过JS深度判断两个对象字段相同
Jun 14 Javascript
javascript获取select值的方法完整实例
Jun 20 Javascript
vue把输入框的内容添加到页面的实例讲解
Nov 11 Javascript
微信小程序新闻网站详情页实例代码
Jan 10 Javascript
js实现双色球效果
Aug 02 #Javascript
js实现tab栏切换效果
Aug 02 #Javascript
原生js canvas实现鼠标跟随效果
Aug 02 #Javascript
原生js+canvas实现下雪效果
Aug 02 #Javascript
jQuery实现滑动开关效果
Aug 02 #jQuery
jQuery实现开关灯效果
Aug 02 #jQuery
JavaScript实现动态生成表格
Aug 02 #Javascript
You might like
PHP采集利器 Snoopy 试用心得
2011/07/03 PHP
document.documentElement &amp;&amp; document.documentElement.scrollTop
2007/12/01 Javascript
为Extjs加加速(javascript加速)
2010/08/19 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
网页中可关闭的漂浮窗口实现可自行调节
2013/08/20 Javascript
jquery+json实现数据列表分页示例代码
2013/11/15 Javascript
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
jquery实现全选和全不选功能效果的实现代码【推荐】
2016/05/05 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
原生js封装的一些jquery方法(详解)
2016/09/20 Javascript
基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果
2017/07/20 jQuery
详解如何构建Promise队列实现异步函数顺序执行
2018/10/23 Javascript
小程序api实现promise封装过程解析
2019/11/21 Javascript
jQuery实现弹幕特效
2019/11/29 jQuery
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
Vue如何基于es6导入外部js文件
2020/05/15 Javascript
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
Python中字符串的常见操作技巧总结
2016/07/28 Python
Python多线程扫描端口代码示例
2018/02/09 Python
基于Django用户认证系统详解
2018/02/21 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
2019/11/11 Python
python向图片里添加文字
2019/11/26 Python
Python 实现数组相减示例
2019/12/27 Python
Pyqt5 关于流式布局和滚动条的综合使用示例代码
2020/03/24 Python
详解Python中namedtuple的使用
2020/04/27 Python
pytorch SENet实现案例
2020/06/24 Python
html5实现九宫格抽奖可固定抽中某项奖品
2020/06/15 HTML / CSS
倩碧英国官网:Clinique英国
2018/08/10 全球购物
师范应届毕业生自荐信
2013/11/18 职场文书
幼儿园教师考核制度
2014/02/01 职场文书
简历中的自我评价范文
2014/02/05 职场文书
岗位安全生产责任书
2014/07/28 职场文书
邀请函范文
2015/02/02 职场文书
审美与表现自我评价
2015/03/09 职场文书
应届毕业生求职信范文
2015/03/19 职场文书
Django与数据库交互的实现
2021/06/03 Python