非常酷炫漂亮的3D立体照片展示墙 纯JAVASCRIPT显示

简介: 分享下一个3d显示照片墙的纯JavaScript效果demo,效果很酷炫。可以通过鼠标上下左右拉动,从而把照片墙进行360°展示


今天主要给大家分享下一个3d显示照片墙的纯JavaScript效果demo,效果很酷炫。可以通过鼠标上下左右拉动,从而把照片墙进行360°展示。

鼠标停止后,在操作过程中,会发现,照片会以某角度轴,继续滑动一段距离。核心JavaScript代码见如下,下方链接有百度网盘分享链接,大家有兴趣可以down下来玩玩。先上图:

酷炫3d照片墙

酷炫3d照片墙

 

酷炫3d照片墙可3d移动展示

酷炫3d照片墙可3d移动展示


<script type="text/javascript">

   /*rotateX/rotateY/rotateZ可以帮助理解三维坐标,*/web前端中文站
   /*则translateZ则可以帮你理解透视位置(translateZ的功能就是让元素在自己的眼前或近或远)*/

   window.onload=function(){
     var oUl=document.getElementById("ul1");
     var aImg=document.getElementsByTagName("img");
     var aLi=oUl.getElementsByTagName("li");
     var deg=360/aLi.length;
     for(var i=0;i<aLi.length;i++){
       //每张图片缩放的时间
       aLi[i].style.transition='all 0.5s '+((aLi.length-1-i)*0.2)+'s'; 
       aLi[i].style.WebkitTransform='rotateY('+deg*i+'deg) translateZ(450px)';
       aLi[i].style.MozTransform='rotateY('+deg*i+'deg) translateZ(450px)';
     }
 
     //禁止拖动照片 www.lisa33xiaoq.net
     document.onselectstart=function(){
     return false;
   } 
   for(var i=0;i<aImg.length;i++){
   aImg[i].setAttribute("ondragstart", "return false")
   }
   var roY=0;
   var roX=-10;
   var xN=0;
   var yN=0;
   var timer=null;
   document.onmousedown=function(ev){
   var ev=ev||event;
   var disX_=ev.clientX;
   var disY_=ev.clientY;
 
   document.onmousemove=function(ev){
   var ev=ev||event;
   var disX=ev.clientX;
   var disY=ev.clientY;
 
   xN=disX-disX_;
   yN=disY-disY_;
 
   roY+=xN*0.1;
   roX-=yN*0.1;

   oUl.style.WebkitTransform='perspective(800px) rotateX('+roX+'deg) rotateY('+roY+'deg)';
   oUl.style.MozTransform='perspective(800px) rotateX('+roX+'deg) rotateY('+roY+'deg)';
 
   disX_=ev.clientX;
   disY_=ev.clientY;
   }
 
   //实现鼠标按着滑动后,松开鼠标,画面继续跟进 差值 进行滑动
   document.onmouseup=function(){
   document.onmousemove=null;

   timer=setInterval(function(){
   xN=xN*0.99;
   yN=yN*0.99;
   if(Math.abs(xN)<=0.5 && Math.abs(yN)<=0.5){ 
   //决定滑动的周期,如果乘以 1.0,则一直滑动下去不停止
   clearInterval(timer);
   }
   roY+=xN*0.5;
   roX-=yN*0.5; 

   oUl.style.WebkitTransform='perspective(800px) rotateX('+roX+'deg) rotateY('+roY+'deg)'; 
   //360 浏览器适用这个
   //oUl.style.MozTransform='perspective(800px) rotateX('+roX+'deg) rotateY('+roY+'deg)';
   },30)
 }
}
   //取消鼠标右键
   document.oncontextmenu=function(){
   return false;
   }
   document.onkeydown=function(ev){
   var ev=ev||event;
 
   if(ev.keyCode==123){
   return false
   }
  }
 }
</script> 

在线演示


原文链接:https://www.lisa33xiaoq.net/1190.html


目录
相关文章
|
7月前
|
JavaScript
js实现图片3D轮播效果(收藏)
js实现图片3D轮播效果(收藏)
83 0
|
7月前
three.js的3D模型渲染主要构成
three.js的3D模型渲染主要构成
120 0
|
JavaScript 前端开发 索引
用Three.js搞个炫酷3D地球
地球人怎么可以不会画地球!从canvas画地球贴图开始,用Three.js手把手教你实现一个炫酷的3D地球!
用Three.js搞个炫酷3D地球
|
15天前
|
Web App开发 移动开发 HTML5
html5 + Three.js 3D风雪封印在棱镜中的梅花鹿动效源码
html5 + Three.js 3D风雪封印在棱镜中的梅花鹿动效源码。画面中心是悬浮于空的梅花鹿,其四周由白色线段组成了一个6边形将中心的梅花鹿包裹其中。四周漂浮的白雪随着多边形的转动而同步旋转。建议使用支持HTML5与css3效果较好的火狐(Firefox)或谷歌(Chrome)等浏览器预览本源码。
51 2
|
4月前
|
编解码 缓存 算法
Three.js如何降低3D模型的大小以便更快加载
为加快600MB的3D模型在Three.js中的加载速度,可采用多种压缩方法:1) 减少顶点数,使用简化工具或LOD技术;2) 压缩纹理,降低分辨率或转为KTX2等格式;3) 采用高效文件格式如glTF 2.0及draco压缩;4) 合并材质减少数量;5) 利用Three.js内置优化如BufferGeometry;6) 按需分批加载模型;7) Web Workers后台处理;8) 多模型合并减少绘制;9) 使用Texture Atlas及专业优化工具。示例代码展示了使用GLTFLoader加载优化后的模型。
519 12
|
4月前
|
存储 JavaScript 前端开发
小白实战!用JS实现一个3D翻书效果,附上代码
小白实战!用JS实现一个3D翻书效果,附上代码
|
4月前
|
存储 JavaScript 前端开发
使用JS创造一个3D粒子化星空,十分酷炫,大家快进来看看吧
使用JS创造一个3D粒子化星空,十分酷炫,大家快进来看看吧
|
7月前
|
JavaScript 开发工具 git
Three.js第1篇,Three.js新手教学,如何在项目中使用Three.js(three.js使用流程详细,three.js的使用方式,three.js创建3d物体)
Three.js封装了WebGL的底层细节,是一款运行在浏览器中的 3D 引擎,可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象,目前在Git上已经拥有90k+的star。
178 0
Three.js第1篇,Three.js新手教学,如何在项目中使用Three.js(three.js使用流程详细,three.js的使用方式,three.js创建3d物体)
|
存储 数据可视化 JavaScript
Three.js:打造独一无二的3D模型可视化编辑神器!
因为之前工作过的可视化大屏项目开发3d大屏组件模块需要用到Three.js来完成,其主功能是实现对3d模型的材质,灯光,背景,动画。等属性进行可视化的编辑操作以及模型编辑数据的存储和模型在大屏上面的拖拽显示
788 1
Three.js:打造独一无二的3D模型可视化编辑神器!
|
人工智能 JavaScript Linux
基于Three.js的3D自动纹理化开发包
DreamTexture.js 基于 Three.js 和稳定扩散(stable diffusion) AI 模型开发,用于实现 3D 模型的自动纹理化。
110 0