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选中select控件 无法设置selected的解决方法
Sep 01 Javascript
Jquery中getJSON在asp.net中的使用说明
Mar 10 Javascript
jquery和css3实现的炫酷时尚的菜单导航
Sep 01 Javascript
JavaScript中对象介绍
Dec 31 Javascript
jQuery滚动加载图片实现原理
Dec 14 Javascript
深入php面向对象、模式与实践
Feb 16 Javascript
Javascript 实现匿名递归的实例代码
May 25 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
Dec 11 Javascript
JS实现的图片选择顺序切换和循环切换功能示例【测试可用】
Dec 28 Javascript
Nuxt使用Vuex的方法示例
Sep 06 Javascript
详解JavaScript 异步编程
Jul 13 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
Nov 09 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
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
pw的一个放后门的方法分析
2007/10/08 PHP
javascript 小型动画组件与实现代码
2010/06/02 PHP
php中unlink()、mkdir()、rmdir()等方法的使用介绍
2012/12/21 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
2015/10/15 PHP
javascript基础知识大集锦(一) 推荐收藏
2011/01/13 Javascript
JavaScript高级程序设计 读书笔记之八 Function类及闭包
2012/02/27 Javascript
一个js控制的导航菜单实例代码
2013/12/03 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
javascript使用输出语句实现网页特效代码
2015/08/06 Javascript
js实现div在页面拖动效果
2016/05/04 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
2017/11/21 Javascript
Vue表单及表单绑定方法
2018/09/04 Javascript
vue实现多个元素或多个组件之间动画效果
2018/09/25 Javascript
Vue.js下拉菜单组件使用方法详解
2019/10/19 Javascript
JavaScript实现拖拽盒子效果
2020/02/06 Javascript
JavaScript异步操作的几种常见处理方法实例总结
2020/05/11 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
2020/08/18 Javascript
如何使用原生Js实现随机点名详解
2021/01/06 Javascript
Python实现多线程抓取妹子图
2015/08/08 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
查看django版本的方法分享
2018/05/14 Python
用python编写第一个IDA插件的实例
2018/05/29 Python
python语音识别实践之百度语音API
2018/08/30 Python
Python的缺点和劣势分析
2019/11/19 Python
python实现坦克大战
2020/04/24 Python
CSS3实例分享--超炫checkbox复选框和radio单选框
2014/09/01 HTML / CSS
澳洲的服装老品牌:SABA
2018/02/06 全球购物
法学毕业生自荐信
2013/11/13 职场文书
学校门卫工作职责
2013/12/07 职场文书
出国留学计划书
2014/04/27 职场文书
群众路线查摆问题整改措施
2014/10/10 职场文书
收入证明怎么写
2015/06/12 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
Vue实现下拉加载更多
2021/05/09 Vue.js
浅析Python实现DFA算法
2021/06/26 Python