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 打印内容方法小结
Nov 04 Javascript
JS代码同步文本框内容的实例方法
Jul 12 Javascript
基于javascript实现checkbox复选框实例代码
Jan 28 Javascript
angularjs+bootstrap实现自定义分页的实例代码
Jun 19 Javascript
React 高阶组件入门介绍
Jan 11 Javascript
原生JS实现的简单轮播图功能【适合新手】
Aug 17 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
Sep 20 Javascript
swiper Scrollbar滚动条组件详解
Sep 08 Javascript
微信小程序自定义弹出层效果
May 26 Javascript
详解Vue.js 响应接口
Jul 04 Javascript
JavaScript实现多文件下载方法解析
Aug 07 Javascript
JS如何实现基于websocket的多端桥接平台
May 14 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
迅雷下载《中学科技》怀旧期刊下载
2021/02/27 无线电
php实现图形显示Ip地址的代码及注释
2014/01/20 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
php及codeigniter使用session-cookie的方法(详解)
2017/04/06 PHP
javascript一个无懈可击的实例化XMLHttpRequest的方法
2010/10/13 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
jquery实现两个图片渐变切换效果的方法
2015/06/25 Javascript
详解vee-validate的使用个人小结
2017/06/07 Javascript
Bootstrap Table从零开始
2017/06/30 Javascript
js轮播图的插件化封装详解
2017/07/17 Javascript
js 开发之autocomplete=&quot;off&quot;在chrom中失效的解决办法
2017/09/28 Javascript
详解JavaScript的BUG和错误
2018/05/07 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
vue使用Google地图的实现示例代码
2018/12/19 Javascript
JS面向对象之单选框实现
2020/01/17 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
用Python将mysql数据导出成json的方法
2018/08/21 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
2020/05/13 Python
Python命令行参数定义及需要注意的地方
2020/11/30 Python
css3背景图片透明叠加属性cross-fade简介及用法实例
2013/01/08 HTML / CSS
PurCotton全棉时代官网:100%天然棉花生产的生活护理用品
2016/11/18 全球购物
日本AOKI官方商城:AOKI西装
2020/06/11 全球购物
C#公司笔试题
2014/03/28 面试题
酒店前厅员工辞职信
2014/01/08 职场文书
社会保险接收函
2014/01/12 职场文书
运动会闭幕式解说词
2014/02/21 职场文书
集体婚礼策划方案
2014/02/22 职场文书
《桃林那间小木屋》教学反思
2014/05/01 职场文书
优秀班组长事迹
2014/05/31 职场文书
2014年汽车销售工作总结
2014/12/01 职场文书
检讨书范文500字
2015/01/28 职场文书
学习保证书怎么写
2015/02/26 职场文书
Python手拉手教你爬取贝壳房源数据的实战教程
2021/05/21 Python
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL