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 $.ajax入门应用一
Nov 19 Javascript
如何用ajax来创建一个XMLHttpRequest对象
Dec 10 Javascript
jquery获取table中的某行全部td的内容方法
Mar 08 Javascript
JavaScript获取页面中超链接数量的方法
Nov 09 Javascript
jQuery倒计时代码(超简单)
Feb 27 Javascript
详解layui弹窗父子窗口之间传参数的方法
Jan 16 Javascript
JS处理一些简单计算题
Feb 24 Javascript
Vue引入jquery实现平滑滚动到指定位置
May 09 jQuery
微信小程序实时聊天WebSocket
Jul 05 Javascript
jQuery表单选择器用法详解
Aug 22 jQuery
JavaScript数组排序功能简单实现
May 14 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
Aug 15 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
我的论坛源代码(八)
2006/10/09 PHP
php下正则来匹配dede模板标签的代码
2010/08/21 PHP
兼容性比较好的PHP生成缩略图的代码
2011/01/12 PHP
php生成QRcode实例
2014/09/22 PHP
php使用memcoder将视频转成mp4格式的方法
2015/03/12 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
2015/12/21 PHP
thinkPHP5框架导出Excel文件简单操作示例
2018/08/03 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
HTML DOM的nodeType值介绍
2011/03/31 Javascript
AngularJS基础学习笔记之指令
2015/05/10 Javascript
jquery实现的点击翻书效果代码
2015/11/04 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
AngularJS 避繁就简的路由
2016/07/01 Javascript
解决ajax不能访问本地文件问题(利用js跨域原理)
2017/01/24 Javascript
JS异步文件上传(兼容IE8+)
2017/04/02 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
Vue组件通信的四种方式汇总
2018/02/08 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
python访问类中docstring注释的实现方法
2015/05/04 Python
Python简单实现enum功能的方法
2016/04/25 Python
基于Python的接口测试框架实例
2016/11/04 Python
Python并发之多进程的方法实例代码
2018/08/15 Python
Win10下Python3.7.3安装教程图解
2019/07/08 Python
keras的ImageDataGenerator和flow()的用法说明
2020/07/03 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
2020/11/10 Python
python中添加模块导入路径的方法
2021/02/03 Python
斯凯奇美国官网:SKECHERS美国
2016/08/20 全球购物
中国最大的潮流商品购物网站:YOHO!BUY有货
2017/01/07 全球购物
迪奥美国官网:Dior美国
2019/12/07 全球购物
公司市场专员岗位职责
2014/06/29 职场文书
人力资源管理专业自荐书
2014/07/07 职场文书
《坐井观天》教学反思
2016/02/18 职场文书
世界上超棒的8种逻辑思维
2019/08/06 职场文书
Python爬虫之爬取哔哩哔哩热门视频排行榜
2021/04/28 Python
Django实现翻页的示例代码
2021/05/24 Python
虚拟机linux端mysql数据库无法远程访问的解决办法
2021/05/26 MySQL