利用css3 transform和transition样式制作点击图片时 图片爆炸开并切换到下一张图片依次循环

首先先看一下效果图

Paste_Image.png

先描述一下大概思路:

布局时外面有一个大的父盒子(box)里面包含多个span(span都是js动态创建的)创建出来的span平铺到box上(定位), 多个span拼成一张图片,box是另一张图片 点击box时每个span爆炸开(移动 ,旋转并且 变大消失)这时会看到box的图片,当每个span过渡完成之后再瞬间恢复到原来的位置且图片换成与box相同的图片,这样就可以循环点击了,下面看一下具体的实现代码,代码里面每一步都有详细的解释:

Title

*{

margin:0;

padding:0

}

html,body{

overflow: hidden;

}

#box{

width:700px;

height:400px;

background:url("img/1.jpg");

position: absolute;

left:50%;

top:50%;

margin-top:-200px;

margin-left:-350px;

}

#box span{

position: absolute;

left:0;

top:0;

background:url("img/0.jpg");

transform:perspective(800px) translate(0px,0px) rotateX(0deg) rotateY(0deg) scale(1);

}

document.addEventListener('DOMContentLoaded',function(){

var oBox=document.getElementById('box');

//定义列

var C=7;

//定义列

var R=4;

//动态创建span 并且平铺

for(var i=0; i

for(var j=0; j

var oSpan=document.createElement('span');

//设置每个span的宽高

oSpan.style.width=oBox.offsetWidth/C+'px';

oSpan.style.height=oBox.offsetHeight/R+'px';

//给每个span定位

oSpan.style.left=j*oBox.offsetWidth/C+'px';

oSpan.style.top=i*oBox.offsetHeight/R+'px';

oBox.appendChild(oSpan);

//给每个span的背景图片定位 平铺后才能拼成一张完整的图片

oSpan.style.backgroundPosition=-oSpan.offsetLeft+'px -'+oSpan.offsetTop+'px';

}

}

var aSpan=oBox.children;

//定义一个图片的初始值

var iNow=0;

//定义开关

var bReady=true;

//点击图片时每个span爆炸

oBox.οnclick=function(){

//防止点击过快时图片会跳

if(bReady==false){return;}

bReady=false;

//每点击一次加1

iNow++;

for(var i=0; i

//获取每个span移动的距离

var x=aSpan[i].offsetLeft-oBox.offsetWidth/2;

var y=aSpan[i].offsetTop-oBox.offsetHeight/2;

//每个span移动并且随机旋转角度 并且放大

aSpan[i].style.WebkitTransform='perspective(800px) translate('+x+'px,'+y+'px) rotateX('+rnd(-180,180)+'deg) rotateY('+rnd(-180,180)+'deg) scale(1.4)';

aSpan[i].style.WebkitTransition='1s all ease';

aSpan[i].style.opacity=0;

}

};

//过渡完成后要执行的

aSpan[1].addEventListener('transitionend',function(){

for(var i=0; i

//瞬间把爆炸出去的图片还原

aSpan[i].style.WebkitTransform='perspective(800px) translate(0px,0px) rotateX(0deg) rotateY(0deg) scale(1)';

aSpan[i].style.opacity=1;

//瞬间回来的过程不需要过渡时间 所以把它干掉

aSpan[i].style.WebkitTransition='none';

//换图

aSpan[i].style.backgroundImage='url("img/'+iNow%3+'.jpg")';

oBox.style.backgroundImage='url("img/'+(iNow+1)%3+'.jpg")';

//过渡完成后允许点击

bReady=true;

}

},false);

//随机数函数

function rnd(n,m){

return parseInt(Math.random()*(m-n)+n);

}

},false);

html图片爆炸效果,利用CSS3制作3D图片爆炸效果相关推荐

  1. 网页特效:用CSS3制作3D图片立方体旋转特效

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  2. css使图片有3d效果,利用CSS3实现3D倾斜视差图片展示特效

    特效描述:利用CSS3实现 3D倾斜 视差图片 展示特效.利用CSS3实现3D倾斜视差图片展示特效 代码结构 1. HTML代码 Movies Popular Princess Mononoke Sp ...

  3. html5实现立体照片墙效果,利用css制作3D照片墙效果

    利用css制作3D照片墙,具体代码如下所示: 无标题文档 以上代码是准备工作,在html代码的body主体中放了一个div,里面包着你想要显示在照片墙上的照片,数量可以任意.接着开始着手写样式. bo ...

  4. 如何用css实现左右翻页效果图,如何利用CSS3实现3D翻书效果

    这篇文章主要介绍了CSS3实现3D翻书效果,基于CSS3新属性Animation及transform实现类似翻书效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 先上效果图:(样式有点丑,可以忽 ...

  5. 利用css制作3d图片旋转_练习

    效果: 鼠标触碰时(停止旋转并高亮): 代码: <!DOCTYPE html> <html lang="en"> <head><meta ...

  6. 制作3D图片立方体旋转特效

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  7. html怎么做成3d正方体,利用CSS3的3D效果制作正方体

    学会用CSS3的3D效果制作一个正方体,有助于增强我们对3D场景的旋转和位移属性的理解.下面的动态图就是利用3D旋转位移,结合动画效果制作的.感兴趣的同学可以在完成正方体的制作基础上,再去探究一下添加 ...

  8. css3制作正方体,利用CSS3的3D效果制作正方体

    学会用css3的3d效果制作一个正方体,有助于增强我们对3d场景的旋转和位移属性的理解.下面的动态图就是利用3d旋转位移,结合动画效果制作的.感兴趣的同学可以在完成正方体的制作基础上,再去探究一下添加 ...

  9. html怎么制作3D字体,用CSS3制作3D文字效果代码实例教程

    这个简单的CSS文本阴影教程将一步步教你如何通过堆叠多层阴影来创建3D文字,然后进一步利用CSS3的transform和transition属性来实现鼠标移过字体放大的效果. 阿里西西web开发网为大 ...

最新文章

  1. PHP中遍历stdclass object 及 json 总结[中国航天神舟十号以json形式向地面返回数据]...
  2. svn: Can't convert string from 'UTF-8' to native
  3. 斯坦福2019秋季课程:图机器学习资料全公开
  4. 电影院终于要开门了!一大波搁浅的春节档大片即将上映...
  5. 使用Dwr时出现java.lang.SecurityException: Access to debug pages is denied
  6. python bootstrap安装_python + django + bootstrap + uWSGI + nginx 环境搭建
  7. JavaScript中获取数组元素索引号方法
  8. java DefaultMutableTreeNode 树形结构 目录 1. Tree的概念 1 1.1. treeNode接口,mutabletreenode接口 1 1.2. 10-4:以T
  9. PYTHON Image Module中Pix[x,y]详解
  10. 空洞卷积(扩张卷积dilated convolution)
  11. 推荐一款平台聚合音乐播放器:Listen 1
  12. 用于目标检测的细粒度动态头
  13. 安装JDK与配置java环境变量
  14. springcloud整合bus
  15. 电脑怎么用c语言写丘比特,C语言丘比特#includebr/#includebr/ 爱问知识人
  16. Android 朋友圈之评论回复列表
  17. 倒计时1天!大会议程全公开,论坛介绍看起来
  18. 北美科技公司“隐藏福利”大盘点:看完我彻底酸了...
  19. 定位java heap space_页面报OutofMemoryError:Java heap space问题定位及优化
  20. 三相可控全桥整流与DC Buck变换电路设计仿真问题汇总

热门文章

  1. SSH免密直接登录方法
  2. spring 注解说明以及@Resource和@Autowired的区别
  3. 如何快速实现Mathematica和Mathtype之间的切换
  4. Effective C# 原则34:创建大容量的Web API(译)
  5. oracle 中的几天后,几年后
  6. 想写Python爬虫?看这5个教程就行了!
  7. python | np.eye()函数
  8. pyqt界面屏幕分辨率自适应_后台系统界面设计踩过的那些坑
  9. linux编译ace,Linux下编译ACE
  10. Redis AOF带来的问题