Inspired by Mac OS X minimize interaction. Built with SVG and Greensock Plugin.
A Pen by zhanyunpeng1996 on CodePen.
<div class="main-ctr"> | |
<svg xmlns="http://www.w3.org/2000/svg" width="540" height="620" viewBox="0 0 540 620"> | |
<g id="Page-1" fill="none" fill-rule="evenodd"> | |
<g id="modal-with-genie-effect"> | |
<path id="step-3" stroke="#979797" d="M186 561.005c0-2.764 2.234-5.005 4.998-5.005h157.004c2.76 0 4.998 2.242 4.998 5.005v33.99c0 2.764-2.234 5.005-4.998 5.005H190.998c-2.76 0-4.998-2.242-4.998-5.005v-33.99z" opacity=".504" /> | |
<path id="step-2" stroke="#979797" d="M270.136 122h237.356c2.758 0 4.36 2.15 3.577 4.8 0 0-23.333 86.246-92.842 174.822-69.51 88.575-66.458 185.37-66.458 185.37-.033 2.776-2.25 5.008-5.01 5.008H193.51c-2.76 0-4.977-2.232-5.01-5.008 0 0 3.05-96.795-66.458-185.37C52.534 213.046 29.202 126.8 29.202 126.8c-.783-2.65.82-4.8 3.578-4.8h237.356z" opacity=".5" /> | |
<path id="step-0" stroke="#979797" d="M20 26.003C20 23.24 22.23 21 25.01 21h489.98c2.767 0 5.01 2.242 5.01 5.003v289.994c0 2.763-2.23 5.003-5.01 5.003H25.01c-2.767 0-5.01-2.242-5.01-5.003V26.003z" /> | |
<path id="element" fill="#FFF" d="M20 26.003C20 23.24 22.23 21 25.01 21h489.98c2.767 0 5.01 2.242 5.01 5.003v289.994c0 2.763-2.23 5.003-5.01 5.003H25.01c-2.767 0-5.01-2.242-5.01-5.003V26.003z" /> | |
<g id="open-modal-ctr"> | |
<path id="open-modal-btn" fill="#FFF" d="M186 561.005c0-2.764 2.234-5.005 4.998-5.005h157.004c2.76 0 4.998 2.242 4.998 5.005v33.99c0 2.764-2.234 5.005-4.998 5.005H190.998c-2.76 0-4.998-2.242-4.998-5.005v-33.99z" /> | |
<text id="text" fill="#7E7878" font-family="Roboto" font-size="16" font-weight="260" transform="translate(185 556)"> | |
<tspan x="41.797" y="27">Open Modal</tspan> | |
</text> | |
</g> | |
<g id="word" font-family="Roboto"> | |
<text id="title" fill="#434343" font-size="20" transform="translate(20 124)"> | |
<tspan x="93.713" y="19">Modal Interaction with Genie Effect</tspan> | |
</text> | |
<text id="paragraf" fill="#7E7878" font-size="16" font-weight="260" transform="translate(20 124)"> | |
<tspan x="100.457" y="59">Inspired by Mac OS X minimize interaction.</tspan> | |
<tspan x="120.609" y="84">Built with SVG and Greensock Plugin.</tspan> | |
</text> | |
</g> | |
<g id="close" transform="translate(486 36)"> | |
<circle id="bg" cx="10" cy="10" r="10" fill="#E9413D" /> | |
<path id="Shape" stroke="#FFF" d="M6 6.023l7.99 7.945M13.99 6.023L6 13.968" stroke-linecap="round" /> | |
</g> | |
</g> | |
</g> | |
</svg> | |
</div> |
Inspired by Mac OS X minimize interaction. Built with SVG and Greensock Plugin.
A Pen by zhanyunpeng1996 on CodePen.
var element = document.querySelector("#element"), | |
wrapper = document.querySelector("#modal-with-genie-effect"), | |
close = document.querySelector("#close"), | |
word = document.querySelector("#word"), | |
open = document.querySelector("#open-modal-ctr"), | |
step0 = "#step-0", | |
step2 = "#step-2", | |
step3 = "#step-3"; | |
var tl = new TimelineMax(); | |
close.addEventListener("click", function(){ | |
wrapper.classList.add("active"); | |
tl | |
.to(element, .3, { | |
delay: .7, | |
y: "-15px", | |
scaleY: .9 | |
}) | |
.to(element, .3, { | |
morphSVG: step2 | |
}) | |
.to(element, .3, { | |
morphSVG: step3, | |
}, "-=.15") | |
.to(element, .3, { | |
y: "0", | |
scaleY: 1, | |
onComplete: function(){ | |
open.classList.add("active"); | |
} | |
}, "-=.15") | |
}); | |
open.addEventListener("click", function(){ | |
this.classList.remove("active"); | |
tl | |
.to(element, .3, { | |
delay: .45, | |
y: "10px", | |
}) | |
.to(element, .3, { | |
morphSVG: step2, | |
}) | |
.to(element, .3, { | |
morphSVG: step0 | |
}, "-=.15") | |
.to(element, .3, { | |
y: "0", | |
onComplete: function(){ | |
wrapper.classList.remove("active"); | |
} | |
}, "-=.3") | |
}); | |
// copy | |
balapaCop("Modal Interaction with Genie Effect", "rgba(255,255,255,.5)"); |
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/1.18.0/TweenMax.min.js"></script> | |
<script src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/16327/MorphSVGPlugin.min.js?r=182"></script> | |
<script src="https://codepen.io/balapa/pen/c58fffe58d661ae3d4b168a43eb3b2b8.js"></script> |
@import "bourbon"; | |
html, | |
body { | |
display: table; | |
width: 100%; | |
height: 100%; | |
background: #005C97; /* fallback for old browsers */ | |
background: -webkit-linear-gradient(to left, #005C97 , #363795); /* Chrome 10-25, Safari 5.1-6 */ | |
background: linear-gradient(to left, #005C97 , #363795); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */ | |
} | |
.main-ctr { | |
display: table-cell; | |
vertical-align: middle; | |
text-align: center; | |
} | |
#element { | |
fill: white; | |
} | |
#step-0, | |
#step-1, | |
#step-2, | |
#step-3 { | |
opacity: 0; | |
} | |
#modal-with-genie-effect #close { | |
cursor: pointer; | |
position: relative; | |
transition: .3s all ease; | |
opacity: 1; | |
} | |
#modal-with-genie-effect #word { | |
transition: .3s all ease; | |
opacity: 1; | |
position: relative; | |
} | |
#modal-with-genie-effect { | |
&.active { | |
#close { | |
opacity: 0; | |
pointer-events: none; | |
transition: .3s all ease .15s; | |
} | |
#word { | |
opacity: 0; | |
transition: .3s all ease .3s; | |
} | |
} | |
} | |
#open-modal-ctr { | |
opacity: 0; | |
pointer-events: none; | |
cursor: pointer; | |
transition: .3s all ease; | |
&.active { | |
opacity: 1; | |
transition: .3s all ease .1s; | |
pointer-events: auto; | |
} | |
} |