博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原生js实现图片的3d效果
阅读量:6212 次
发布时间:2019-06-21

本文共 2234 字,大约阅读时间需要 7 分钟。

<!doctype html>

<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>3D</title> 
<style type="text/css">
*{margin:0;padding:#000;}
body{overflow:hidden;background:#000;}
#perspective{
perspective:1000px;/*景深*/
}
#wrap{
position:relative;
width:133px;
height:200px;
border:2px solid red;
margin:150px auto;
transform-style:preserve-3d;
transform:rotateX(-10deg) rotateY(0deg);
}
#wrap img{
position:absolute;
top:0;
transform:rotateX(0deg) rotateY(0deg);
-webkit-box-reflect:below 0 -webkit-linear-gradient(transparent,transparent 50%,rgba(255,255,255,.3));;
}
</style>
</head>
<body>
<div id="perspective" >
<div id="wrap" >
<img src="images/1.jpg" />
<img src="images/2.jpg" />
<img src="images/3.jpg" />
<img src="images/4.jpg" />
<img src="images/5.jpg" />
<img src="images/6.jpg" />
<img src="images/7.jpg" />
<img src="images/8.jpg" />
<img src="images/9.jpg" />
<img src="images/10.jpg" />
<img src="images/11.jpg" />
</div>
</div> 
<script type="text/javascript">
window.οnlοad=function(){
var oImg=document.getElementsByTagName("img");//通过标签获取元素节点
var oWrap=document.getElementById("wrap");
var Deg = 360 / oImg.length;
Array.prototype.forEach.call(oImg,function(el,index){
el.style.transform="rotateY("+Deg*index+"deg) translateZ(350px)";
el.style.transition="transform 1s "+index*0.1+"s";
});
var nowX,nowY,lastX,lastY,minusX,minusY,roX=-10,roY=0,timer;
document.οnmοusedοwn=function(ev){
var ev=ev||window.event;//兼容ie9
lastX=ev.clientX; lastY=ev.clientY;
this.οnmοusemοve=function(ev){
nowX=ev.clientX;nowY=ev.clientY;
minusX=nowX-lastX;
minusY=nowY-lastY;
roX-=minusY*0.1;
roY+=minusX*0.2;
oWrap.style.transform="rotateX("+roX+"deg) rotateY("+roY+"deg)"
lastX=nowX;lastY=nowY;
}
this.οnmοuseup=function(){
this.οnmοusemοve=null;
timer=setInterval(function(){
minusX *=0.98;
minusY *=0.98;
roX-=minusY*0.1;
roY+=minusX*0.2;
oWrap.style.transform="rotateX("+roX+"deg) rotateY("+roY+"deg)";
if(Math.abs(minusX)<0.1&&Math.abs(minusY)<0.1)
{
clearInterval(timer);
}
},1000/60);
this.οnmοuseup=null;
}
}
}
</script>
</body>
</html>

转载于:https://www.cnblogs.com/Tohold/p/9018394.html

你可能感兴趣的文章
配置OSPF发布聚合路由
查看>>
NAT/NAPT
查看>>
迭代器 -> 固定的思路. for循环
查看>>
db2 cpu使用率高问题分析处理
查看>>
pku1944 Fiber Communications
查看>>
Play Framework 应用创建、运行及调试
查看>>
项目案例分享-华为私有云(分享1)
查看>>
Oracle数据库shutdown immediate被hang住的几个原因
查看>>
jquery实现增删改(伪)-老男孩作业day13
查看>>
RMQ 问题及解决算法
查看>>
NFS存储服务器的部署流程
查看>>
SQL函数大全
查看>>
Django中@login_required用法简介
查看>>
python 装饰器
查看>>
Shell运算符:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等
查看>>
ImageIO 操作图片
查看>>
项目总结
查看>>
AngularJs过滤器
查看>>
苏格拉底的名言警句
查看>>
在Excel中插入Flash及解决不能自动播放问题
查看>>