html5翻页原理,爆炸翻页HTML5+CSS3

李立昌 http://www.jianshu.com/users/b1e8423ae7e2/latest_articles

*{

margin: 0;

padding: 0;

}

html,body{ overflow: hidden;}

#box{

width: 700px;

height: 400px;

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

margin:100px auto;

position: relative;

}

#box span{

position: absolute;

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

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

}

function rnd(m,n){

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

}

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

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

//1铺span

var C = 7;

var R = 4;

for(var r = 0;r

for(var c = 0;c

//创建span

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

var w = oBox.offsetWidth/C;

var h = oBox.offsetHeight/R;

oSpan.style.width = w +'px';

oSpan.style.height = h +'px';

oSpan.style.left = w*c+'px';

oSpan.style.top = h*r+'px';

oBox.appendChild(oSpan);

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

}

}

//点击

var aSpan = oBox.children;

var iNow = 0;

var bReady = true;

oBox.onclick = function(){

if(bReady==false){return;}

bReady = false;

iNow++;

for(var i = 0;i

//爆炸开

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

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

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

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

aSpan[i].style.opacity = 0;

}

};

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

//瞬间拉回

bReady = true;

for(var i = 0;i

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

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

aSpan[i].style.opacity = 1;

//换图

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

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

}

},false);

},false);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值