main.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. jQuery(document).ready(function($){
  2. //cache some jQuery objects
  3. var modalTrigger = $('.cd-modal-trigger'),
  4. transitionLayer = $('.cd-transition-layer'),
  5. transitionBackground = transitionLayer.children(),
  6. modalWindow = $('.cd-modal');
  7. var frameProportion = 1.78, //png frame aspect ratio
  8. frames = 25, //number of png frames
  9. resize = false;
  10. //set transitionBackground dimentions
  11. setLayerDimensions();
  12. $(window).on('resize', function(){
  13. if( !resize ) {
  14. resize = true;
  15. (!window.requestAnimationFrame) ? setTimeout(setLayerDimensions, 300) : window.requestAnimationFrame(setLayerDimensions);
  16. }
  17. });
  18. //open modal window
  19. modalTrigger.on('click', function(event){
  20. event.preventDefault();
  21. transitionLayer.addClass('visible opening');
  22. var delay = ( $('.no-cssanimations').length > 0 ) ? 0 : 600;
  23. setTimeout(function(){
  24. modalWindow.addClass('visible');
  25. }, delay);
  26. });
  27. //close modal window
  28. modalWindow.on('click', '.modal-close', function(event){
  29. event.preventDefault();
  30. transitionLayer.addClass('closing');
  31. modalWindow.removeClass('visible');
  32. transitionBackground.one('webkitAnimationEnd oanimationend msAnimationEnd animationend', function(){
  33. transitionLayer.removeClass('closing opening visible');
  34. transitionBackground.off('webkitAnimationEnd oanimationend msAnimationEnd animationend');
  35. });
  36. });
  37. function setLayerDimensions() {
  38. var windowWidth = $(window).width(),
  39. windowHeight = $(window).height(),
  40. layerHeight, layerWidth;
  41. if( windowWidth/windowHeight > frameProportion ) {
  42. layerWidth = windowWidth;
  43. layerHeight = layerWidth/frameProportion;
  44. } else {
  45. layerHeight = windowHeight*1.2;
  46. layerWidth = layerHeight*frameProportion;
  47. }
  48. transitionBackground.css({
  49. 'width': layerWidth*frames+'px',
  50. 'height': layerHeight+'px',
  51. });
  52. resize = false;
  53. }
  54. });