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 相关文章推荐
Js+XML 操作
Sep 20 Javascript
经常用到的JavasScript事件的翻译
Apr 09 Javascript
用js写了一个类似php的print_r输出换行功能
Feb 18 Javascript
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
Apr 02 Javascript
javascript的数组和常用函数详解
May 09 Javascript
javascript中数组的多种定义方法和常用函数简介
May 09 Javascript
Bootstrap表单组件教程详解
Apr 26 Javascript
node.js实现微信JS-API封装接口的示例代码
Sep 06 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
Sep 25 Javascript
vue 使用Jade模板写html,stylus写css的方法
Feb 23 Javascript
vue-router实现编程式导航的代码实例
Jan 19 Javascript
VUE解决 v-html不能触发点击事件的问题
Oct 28 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查询搜索引擎排名位置的代码
2010/01/05 PHP
php+ajax实时输入自动搜索匹配的方法
2014/12/26 PHP
PHP中余数、取余的妙用
2015/06/29 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
jQuery 隔行换色 支持键盘上下键,按Enter选定值
2009/08/02 Javascript
getElementByIdx_x js自定义getElementById函数
2012/01/24 Javascript
js相册效果代码(点击创建即可)
2013/04/16 Javascript
下拉菜单点击实现连接跳转功能的js代码
2013/05/19 Javascript
JavaScript eval() 函数介绍及应用示例
2014/07/29 Javascript
jQuery中removeProp()方法用法实例
2015/01/05 Javascript
JS实现网页游戏中滑块响应鼠标点击移动效果
2015/10/19 Javascript
利用angularjs1.4制作的简易滑动门效果
2017/02/28 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
vue自动化表单实例分析
2018/05/06 Javascript
用npm-run实现自动化任务的方法示例
2019/01/14 Javascript
Layui数据表格之单元格编辑方式
2019/10/26 Javascript
JavaScript实现省份城市的三级联动
2020/02/11 Javascript
JS+CSS实现动态时钟
2021/02/19 Javascript
简单的Python抓taobao图片爬虫
2014/10/26 Python
极简的Python入门指引
2015/04/01 Python
Python对列表排序的方法实例分析
2015/05/16 Python
python+matplotlib绘制饼图散点图实例代码
2018/01/20 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
2018/10/11 Python
解决django后台管理界面添加中文内容乱码问题
2019/11/15 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
HTML5梦幻之旅——炫丽的流星雨效果实现过程
2013/08/06 HTML / CSS
Vans澳大利亚官网:购买鞋子、服装及配件
2019/09/05 全球购物
PHP如何防止SQL注入
2014/05/03 面试题
网络研修随笔感言
2014/02/17 职场文书
期终自我鉴定
2014/02/17 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL
JavaScript实现简单计时器
2021/06/22 Javascript
asyncio异步编程之Task对象详解
2022/03/13 Python
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL