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 相关文章推荐
Mootools 1.2教程 输入过滤第一部分(数字)
Sep 15 Javascript
jQuery中width()方法用法实例
Dec 24 Javascript
学习JavaScript设计模式(单例模式)
Nov 26 Javascript
jQuery设置Cookie及删除Cookie实例分析
Apr 15 Javascript
Javascript基础_标记文字的实现方法
Jun 14 Javascript
jQuery Ajax请求后台数据并在前台接收
Dec 10 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
Dec 24 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
Mar 30 jQuery
js单页hash路由原理与应用实战详解
Aug 14 Javascript
React Native 搭建开发环境的方法步骤
Oct 30 Javascript
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
Oct 08 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
Aug 20 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加速的eAccelerator dll支持文件打包下载
2007/09/30 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
PHP实现扎金花游戏之大小比赛的方法
2015/03/10 PHP
PHP实现图片压缩
2020/09/09 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
2020/10/28 PHP
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
2013/06/24 Javascript
JS将制定内容复制到剪切板示例代码
2014/02/11 Javascript
javascript中的循环语句for语句深入理解
2014/04/04 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
vue中的适配px2rem示例代码
2018/11/19 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
[06:43]DAC2018 4.5 SOLO赛 Maybe vs Paparazi
2018/04/06 DOTA
Python中的字典遍历备忘
2015/01/17 Python
利用numpy+matplotlib绘图的基本操作教程
2017/05/03 Python
python与C互相调用的方法详解
2017/07/14 Python
pandas表连接 索引上的合并方法
2018/06/08 Python
Python实现图片拼接的代码
2018/07/02 Python
python 去除txt文本中的空格、数字、特定字母等方法
2018/07/24 Python
Python QQBot库的QQ聊天机器人
2019/06/19 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
Python 实现平台类游戏添加跳跃功能
2020/03/27 Python
python collections模块的使用
2020/10/16 Python
python Protobuf定义消息类型知识点讲解
2021/03/02 Python
python 中 .py文件 转 .pyd文件的操作
2021/03/04 Python
CSS3实现内凹圆角的实例代码
2017/05/04 HTML / CSS
印度化妆品购物网站:Nykaa
2018/07/22 全球购物
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
大学生应聘自荐信
2013/10/11 职场文书
管理建议书范文
2014/05/13 职场文书
工商干部先进事迹
2014/05/14 职场文书
开服装店计划书
2014/08/15 职场文书
大二学生学年自我鉴定
2014/09/12 职场文书
2014年庆祝国庆65周年演讲稿
2014/09/21 职场文书
python使用openpyxl库读写Excel表格的方法(增删改查操作)
2021/05/02 Python
如何使用pdb进行Python调试
2021/06/30 Python