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 相关文章推荐
Javascript 生成指定范围数值随机数
Jan 09 Javascript
用js做一个小游戏平台 (一)
Dec 29 Javascript
JS生成不重复随机数组的函数代码
Jun 10 Javascript
javascript操作符&quot;!~&quot;详解
Feb 10 Javascript
jQuery的实例及必知重要的jQuery选择器详解
May 20 Javascript
js控制台输出的方法(详解)
Nov 26 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
Apr 17 Javascript
Vue.js 2.5新特性介绍(推荐)
Oct 24 Javascript
Vue中自定义全局组件的实现方法
Dec 08 Javascript
Vue使用vux-ui自定义表单验证遇到的问题及解决方法
May 10 Javascript
vue弹出框组件封装实例代码
Oct 31 Javascript
解决vue 子组件修改父组件传来的props值报错问题
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
自动生成文章摘要的代码[PHP 版本]
2007/03/20 PHP
php中通过正则表达式下载内容中的远程图片的函数代码
2012/01/10 PHP
php批量删除超链接的实现方法
2015/10/19 PHP
PHP7基于curl实现的上传图片功能
2018/05/11 PHP
微信支付之JSAPI公众号支付详解
2019/05/15 PHP
php如何实现数据库的备份和恢复
2020/11/30 PHP
双击滚屏-常用推荐
2006/11/29 Javascript
javascript 伪数组实现方法
2010/10/11 Javascript
围观tangram js库
2010/12/28 Javascript
javascript实现des解密加密全过程
2014/04/03 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
javascript表达式和运算符详解
2017/02/07 Javascript
canvas实现爱心和彩虹雨效果
2017/03/09 Javascript
详解nodejs微信公众号开发——1.接入微信公众号
2017/04/10 NodeJs
vue-router 权限控制的示例代码
2017/09/21 Javascript
vue.extend实现alert模态框弹窗组件
2018/04/28 Javascript
layui异步加载table表中某一列数据的例子
2019/09/16 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
JavaScript如何操作css
2020/10/24 Javascript
详解javascript脚本何时会被执行
2021/02/05 Javascript
[54:58]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第一场 11.25
2020/11/25 DOTA
详解python的数字类型变量与其方法
2016/11/20 Python
使用python获取csv文本的某行或某列数据的实例
2018/04/03 Python
Django ManyToManyField 跨越中间表查询的方法
2018/12/18 Python
Python学习笔记之错误和异常及访问错误消息详解
2019/08/08 Python
django fernet fields字段加密实践详解
2019/08/12 Python
详解用Python爬虫获取百度企业信用中企业基本信息
2020/07/02 Python
Django项目创建及管理实现流程详解
2020/10/13 Python
HTML5中form如何关闭自动完成功能的方法
2018/07/02 HTML / CSS
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
DC Shoes俄罗斯官网:美国滑板鞋和服饰品牌
2020/08/19 全球购物
电脑销售顾问自荐信
2014/01/29 职场文书
安全演讲稿开场白
2014/08/25 职场文书
纪念九一八事变83周年国旗下讲话稿
2014/09/15 职场文书
浅谈python数据类型及其操作
2021/05/25 Python