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
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
Mar 21 Javascript
JavaScript之Getters和Setters 平台支持等详细介绍
Dec 07 Javascript
javascript笛卡尔积算法实现方法
Apr 08 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
Dec 15 Javascript
AngularJS基础 ng-hide 指令用法及示例代码
Aug 01 Javascript
AngularJS入门教程之静态模板详解
Aug 18 Javascript
Bootstrap 响应式实用工具实例详解
Mar 29 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
Dec 28 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
Oct 10 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
Jan 23 Javascript
Element Popover 弹出框的使用示例
Jul 26 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
Content-type 的说明
2006/10/09 PHP
php 分库分表hash算法
2009/11/12 PHP
用php解析html的实现代码
2011/08/08 PHP
php使用google地图应用实例
2014/12/31 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
2016/11/16 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
2019/04/17 PHP
使用js对select动态添加和删除OPTION示例代码
2013/08/12 Javascript
JavaScript中检查对象property的存在性方法介绍
2014/12/30 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
原生js实现瀑布流布局
2017/03/08 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
代码详解JS操作剪贴板
2018/02/11 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
node.js监听文件变化的实现方法
2019/04/17 Javascript
微信小程序使用字体图标的方法
2019/05/23 Javascript
vue实现select下拉显示隐藏功能
2019/09/30 Javascript
基于JavaScript实现简单扫雷游戏
2021/01/02 Javascript
python函数参数*args**kwargs用法实例
2013/12/04 Python
关于python多重赋值的小问题
2019/04/17 Python
django框架创建应用操作示例
2019/09/26 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
2020/03/08 Python
python爬虫实例之获取动漫截图
2020/05/31 Python
详解CSS3中border-image的使用
2015/07/18 HTML / CSS
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
利用canvas实现图片压缩的示例代码
2018/07/17 HTML / CSS
法国房车租赁网站:Yescapa
2019/08/26 全球购物
工业设计专业推荐信
2013/10/29 职场文书
教师四风对照检查材料思想汇报
2014/09/17 职场文书
卫生厅领导班子党的群众路线教育实践活动整改措施
2014/09/20 职场文书
公安领导班子四风问题个人整改措施思想汇报
2014/10/09 职场文书
2014年双拥工作总结
2014/11/21 职场文书
酒店财务总监岗位职责
2015/04/03 职场文书
2016见义勇为事迹材料汇总
2016/03/01 职场文书
python数据可视化使用pyfinance分析证券收益示例详解
2021/11/20 Python
Redis实现订单过期删除的方法步骤
2022/06/05 Redis