Click it to break it
A Pen by Andrey Pokrovskiy on CodePen.
<div id="wrap"> | |
<div id="popup"> | |
<h1>break me</h1> | |
</div> | |
</div> | |
<div class="reverse">Reverse</div> |
var pieces = 70, | |
speed = 1, | |
pieceW = 30, | |
pieceH = 30; | |
for (var i = pieces - 1; i >= 0; i--) { | |
$('#popup').prepend('<div class="piece" style="width:'+pieceW+'px; height:'+pieceH+'px"></div>'); | |
}; | |
function breakGlass(from){ | |
if (from === "reverse"){ | |
$('.piece').each(function(){ | |
TweenLite.to($(this), speed, {x:0, y:0, rotationX:0, rotationY:0, opacity: 1, z: 0}); | |
TweenLite.to($('#popup h1'),0.2,{opacity:1, delay: speed}); | |
}); | |
return; | |
} | |
if(!from){ | |
TweenLite.to($('#popup h1'),0.2,{opacity:0}); | |
} else { | |
TweenLite.from($('#popup h1'),0.5,{opacity:0, delay: speed}); | |
} | |
$('.piece').each(function(){ | |
var distX = getRandomArbitrary(-250, 250), | |
distY = getRandomArbitrary(-250, 250), | |
rotY = getRandomArbitrary(-720, 720), | |
rotX = getRandomArbitrary(-720, 720), | |
z = getRandomArbitrary(-500, 500); | |
if(!from){ | |
TweenLite.to($(this), speed, {x:distX, y:distY, rotationX:rotX, rotationY:rotY, opacity: 0, z: z}); | |
} else { | |
TweenLite.from($(this), speed, {x:distX, y:distY, rotationX:rotX, rotationY:rotY, opacity: 0, z: z}); | |
} | |
}); | |
} | |
function getRandomArbitrary(min, max) { | |
return Math.random() * (max - min) + min; | |
} | |
$('.piece, h1').click(function(){ | |
breakGlass(); | |
}); | |
$('.reverse').click(function(){ | |
breakGlass('reverse'); | |
}); | |
breakGlass(true); |
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> | |
<script src="http://cdnjs.cloudflare.com/ajax/libs/gsap/latest/TweenMax.min.js"></script> |
Click it to break it
A Pen by Andrey Pokrovskiy on CodePen.
@import url(http://fonts.googleapis.com/css?family=Noto+Sans); | |
{ | |
margin: 0; | |
padding: 0; | |
} | |
#wrap { | |
position: absolute; | |
top: 0; left: 0; right: 0; bottom: 0; | |
background-color: #333; | |
overflow: hidden; | |
} | |
#popup { | |
position: absolute; | |
width: 300px; | |
height: auto; | |
top: 50%; left: 50%; | |
margin-left: -150px; margin-top: -100px; | |
-webkit-perspective: 800px; | |
-webkit-perspective-origin: 50% 50px; | |
perspective: 800px; | |
perspective-origin: 50% 50px; | |
} | |
.piece { | |
background: rgba(95,144,222,0.5); | |
float: left; | |
} | |
#popup h1 { | |
position: absolute; | |
text-align: center; | |
width: 100%; | |
height: 40px; | |
top: 50%; margin-top: -20px; | |
font-family: 'Noto Sans', sans-serif; | |
color: #ccc; | |
} | |
.reverse { | |
position: absolute; | |
top: 20px; | |
left: 20px; | |
font-family: 'Noto Sans', sans-serif; | |
color: #ccc; | |
cursor: pointer; | |
} |