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 相关文章推荐
JQuery的Validation插件中Remote验证的中文问题
Jul 26 Javascript
JavaScript继承方式实例
Oct 29 Javascript
基于jquery的表头固定的若干方法
Jan 27 Javascript
解析jQuery的三种bind/One/Live事件绑定使用方法
Dec 30 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
Apr 04 Javascript
js获取当前周、上一周、下一周日期
Mar 19 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
May 20 jQuery
微信小程序之swiper滑动面板用法示例
Dec 04 Javascript
vue通信方式EventBus的实现代码详解
Jun 10 Javascript
微信小程序实现横向滚动导航栏效果
Dec 12 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
Mar 31 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
Apr 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+jQuery+MySql实现红蓝(顶踩)投票代码
2015/08/25 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
PHP session会话操作技巧小结
2016/09/27 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
2016/10/31 PHP
PHP rmdir()函数的用法总结
2019/07/02 PHP
JavaScript Chart 插件整理
2010/06/18 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
2014/05/21 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
JavaScript实现图片本地预览功能【不用上传至服务器】
2017/09/20 Javascript
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
Vuex modules模式下mapState/mapMutations的操作实例
2019/10/17 Javascript
vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解
2020/04/28 Javascript
使用原生JS实现滚轮翻页效果的示例代码
2020/05/31 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
2020/09/17 Javascript
Python每天必学之bytes字节
2016/01/28 Python
python技能之数据导出excel的实例代码
2017/08/11 Python
Python基于回溯法子集树模板解决全排列问题示例
2017/09/07 Python
python lxml中etree的简单应用
2019/05/10 Python
python 正则表达式参数替换实例详解
2020/01/17 Python
python手写均值滤波
2020/02/19 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
python3.x中安装web.py步骤方法
2020/06/23 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
理肤泉美国官网:La Roche-Posay
2018/01/17 全球购物
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
教师自荐信
2013/12/10 职场文书
职称评定自我鉴定
2014/03/18 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
个人务虚会发言材料
2014/10/20 职场文书
安全教育主题班会总结
2015/08/14 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers