原生JS实现图片翻转旋转效果
来源:互联网 发布:论文数据研究方法 编辑:程序博客网 时间:2024/05/17 23:57
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> #imgWrap{ width: 800px; height:400px; margin:80px auto; perspective:800px; } #imgWrap img{ float: left; height:80px; width: 80px; } #btn{ width:100px; text-align: center; font:16px/40px Arial,Verdana; color:#fff; padding:0 20px; background:rgb(0,100,0); margin:0 auto; border-radius:5px; cursor: pointer; box-shadow:2px 2px 5px rgba(0,0,0,0.5); } </style> <script type="text/javascript"> /* * 1.闪烁效果(瞬间将宽高都变为0,scale,并且是随机的) * 2.图片从小到大,同时透明度从1变成0(必须是当前图片上一步效果走完了,才会开始) * 3.图片旋转,同时透明度从0变成1,有层次感(位移translate)(当所有图片透明度都变为0的时候,才会开始) */ window.onload=function(){ var btn=document.getElementById('btn'); var imgs=document.querySelectorAll('img'); var allEnd=0;//用来判断所有的图片是否都完成了所有的运动步骤 var on=true;//用来决定用户是否可以再次点击 //给btn添加点击事件 btn.onclick=function(){ console.log("on:"+on); if(!on){ return; } on=false; var endNum=0;//运动完成的图片数量 for(var i=0;i<imgs.length;i++){ //写成自执行函数的原因:for循环速度很快,将会导致setTimeout中的i找不到值 (function(i){ setTimeout(function(){ montion(imgs[i],'10ms',function(){ this.style.transform='scale(0)';//因为函数用了call函数,所以可以用this,否则只能用imgs[i] },function(){ //第二步的运动从这里开始 montion(this,'1s',function(){ this.style.transform="scale(1)"; this.style.opacity=0; },function(){ endNum++;//只要有一张图片完成了第二步,则加1 if(endNum===imgs.length){ toBig(); } }) }); },Math.random()*1000); })(i); } //定时器,用来延迟时间,不让图片同步所放 }; //第三个运动效果 function toBig(){ /* *坐标轴,x,y,z */ for(var i=0;i<imgs.length;i++){ imgs[i].style.transition=''; // imgs[i].style.opacity='1'; //想要一个物体有css3中的动作变化,那就需要给它一个初始值 imgs[i].style.transform='rotateY(0deg) translateZ(-'+Math.random()*500+'px)'; //自执行函数的目的是,为了找到i,否则for循环执行太快,会找不到i (function(i){ setTimeout(function(){ montion(imgs[i],'2s',function(){ this.style.opacity=1; this.style.transform='rotateY(-360deg) translateZ(0)' },function(){ allEnd++; if(allEnd===imgs.length){ console.log("allEnd:"+allEnd+',imgs.length:'+imgs.length); //这个条件成立,说明所有的图片都运动完了,接下来才允许再次点击 //当所有运动完了以后,才允许再次点击 on=true; allEnd=0; } }); },Math.random()*1000); })(i); } } //运动函数(运动的对象,运动的时间,运动的属性函数,运动完成后要做的事情) function montion(obj,time,doFn,callBack){ obj.style.transition=time; doFn.call(obj);//调用函数,并且把this的指向给obj var called=false;//这里的原因是为了解决transitionend调用多次的bug obj.addEventListener('transitionend',function(){ if(!called){ callBack&&callBack.call(obj);//解决如果没有传入第四个callBack参数的问题 called=true; } },false);//事件三阶段,第三个参数决定是在捕获阶段还是冒泡阶段,调用此函数,false代表是在冒泡阶段 } } </script></head><body> <div id="imgWrap"> <img src="images/1.jpg" alt=""> <img src="images/2.jpg" alt=""> <img src="images/3.jpg" alt=""> <img src="images/4.jpg" alt=""> <img src="images/5.jpg" alt=""> <img src="images/6.jpg" alt=""> <img src="images/7.jpg" alt=""> <img src="images/8.jpg" alt=""> <img src="images/9.jpg" alt=""> <img src="images/10.jpg" alt=""> <img src="images/11.jpg" alt=""> <img src="images/12.jpg" alt=""> <img src="images/13.jpg" alt=""> <img src="images/14.jpg" alt=""> <img src="images/15.jpg" alt=""> <img src="images/16.jpg" alt=""> <img src="images/17.jpg" alt=""> <img src="images/18.jpg" alt=""> <img src="images/19.jpg" alt=""> <img src="images/20.jpg" alt=""> <img src="images/21.jpg" alt=""> <img src="images/22.jpg" alt=""> <img src="images/23.jpg" alt=""> <img src="images/24.jpg" alt=""> <img src="images/25.jpg" alt=""> <img src="images/26.jpg" alt=""> <img src="images/27.jpg" alt=""> <img src="images/28.jpg" alt=""> <img src="images/29.jpg" alt=""> <img src="images/30.jpg" alt=""> <img src="images/31.jpg" alt=""> <img src="images/32.jpg" alt=""> <img src="images/33.jpg" alt=""> <img src="images/34.jpg" alt=""> <img src="images/35.jpg" alt=""> <img src="images/36.jpg" alt=""> <img src="images/37.jpg" alt=""> <img src="images/38.jpg" alt=""> <img src="images/39.jpg" alt=""> <img src="images/40.jpg" alt=""> <img src="images/41.jpg" alt=""> <img src="images/42.jpg" alt=""> <img src="images/43.jpg" alt=""> <img src="images/44.jpg" alt=""> <img src="images/45.jpg" alt=""> <img src="images/46.jpg" alt=""> <img src="images/47.jpg" alt=""> <img src="images/48.jpg" alt=""> <img src="images/49.jpg" alt=""> <img src="images/50.jpg" alt=""> </div> <div id="btn">点击查看效果</div></body></html>
0 0
- 原生JS实现图片翻转旋转效果
- js实现图片旋转效果
- js实现图片翻转切换效果
- 图片旋转缩放翻转效果
- 原生JS实现图片轮滚效果
- js实现图片轮番效果,原生代码
- 原生JS实现图片的放大镜效果
- js图片产品翻转效果
- 原生js - 图片放大镜效果
- 图片翻转效果的实现
- 原生js代码实现图片放大境效果
- 分享原生js代码实现图片放大境效果
- 原生js代码实现图片放大境效果
- JS原生实现图片轮播切换效果
- 原生js将图片转成base64,实现预览效果
- 原生js实现图片的3d效果,附上源码
- css3 图片旋转效果 以y轴翻转效果等
- 原生JS实现运动效果
- Xcode不升级一样各个手机系统版本(9.2 9.3 10.0 10.1 10.2)真机调试
- opencv:计算程序运行时间
- 矩阵链相乘
- 抽象容器类型
- svn的使用
- 原生JS实现图片翻转旋转效果
- 在那片柔软的地方
- CodeForces 715A. Plus and Square Root(数学,脑洞题)
- Android自定义TextView实心圆角颜色背景(动态改变圆角背景颜色)
- SpringMVC注解开发
- SAP系统中凭证涉及日期
- angularjs angular-bootstrap-lightbox插件点击截图放大到原始尺寸功能
- 总结清除浮动的7种方法
- Java基础--基础数据类型及封装数据类型