jQuery & GSAP Based Modal Window with Motion Blur Effect
| File Size: | 2.67 KB |
|---|---|
| Views Total: | 3604 |
| Last Update: | |
| Publish Date: | |
| Official Website: | Go to website |
| License: | MIT |
A stylish animated modal window with SVG filter based motion blur effect, built using jQuery, CSS3, SVG and GSAP JavaScript library (TweenMax.js).
How to use it:
1. Create a modal window that is hidden on page load.
<div class="modal"> <button class="close-modal">×</button> <p>Modal Content</p> </div>
2. Create a button to toggle the modal window.
<button class="open-modal">Open Modal</button>
3. Create a fullscreen overlay for the modal window.
<div class="modal-overlay"></div>
4. Create SVG elements for the motion blur effect. More information about SVG filters.
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" class="filters">
<defs>
<filter id="blur">
<feGaussianBlur id="blur-filter" in="SourceGraphic" stdDeviation="0,0" />
</filter>
</defs>
</svg>
5. The essential CSS/CSS3 styles.
* { box-sizing: border-box; }
.modal-overlay {
background: rgba(51,51,68,0.4);
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
opacity: 0;
visibility: hidden;
}
.modal {
background: #eeeaea;
text-align: center;
width: 230px;
height: 320px;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
border-radius: 3px;
margin: auto;
padding: 20px;
-webkit-filter: url("#blur");
filter: url("#blur");
-webkit-transform: translate3d(0, -900%, 0);
transform: translate3d(0, -900%, 0);
}
.close-modal {
background: none;
border: none;
position: absolute;
font-size: 20px;
right: 10px;
top: 10px;
color: #334;
outline: none;
}
.filters {
position: absolute;
width: 0;
height: 0;
}
6. Load the latest jQuery library and TweenMax.js at the bottom of your document..
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/gsap/1.15.0/TweenMax.min.js"></script>
7. Enable the modal window and the motion blur effect.
$(document).ready(function(){
var $obj=$(".modal")
,$overlay=$(".modal-overlay")
,blur=$("#blur-filter").get(0)
;
function setBlur(v){
blur.setAttribute("stdDeviation", v);
}
function getPos(){
return $obj.position();
}
var lastPos=getPos();
function update(){
var pos=getPos();
var limit=20;
var dx=Math.min(limit,Math.abs(pos.left-lastPos.left)*0.5);
var dy=Math.min(limit,Math.abs(pos.top-lastPos.top)*0.5);
setBlur(dx+","+dy);
lastPos=pos;
requestAnimationFrame(update);
}
update();
var isOpen=false;
function openModal(){
/*$overlay.css({
display:"block"
})*/
TweenMax.to($overlay,0.1,{autoAlpha:1});
TweenMax.fromTo($obj,0.6,{y:-($(window).height()+$obj.height())},{delay:0.2,y:"0%",ease:Elastic.easeOut,easeParams:[1.1,0.7],force3D:true});
}
function closeModal(){
TweenMax.to($overlay,0.1,{delay:0.55,autoAlpha:0});
TweenMax.to($obj,0.55,{y:$(window).height()+$obj.height(),ease:Back.easeIn,force3D:true});
}
$(".open-modal").click(function(){
openModal();
})
$(".close-modal,.modal-overlay,.input-submit").click(function(){
closeModal();
})
})
This awesome jQuery plugin is developed by lbebber. For more Advanced Usages, please check the demo page or visit the official website.











