Files
zaufane.pl/libraries/cre-animate/js/jquery.cre-animate.js
2024-11-04 19:13:57 +01:00

318 lines
11 KiB
JavaScript

/*!
* jQuery Cre-animate - Scrolling Animations - v1.1
* Copyright (c) 2014 CreativelyCoded
* support@creativelycoded.com
*
* http://www.creativelycoded.com/
*/
(function($) { "use strict";
var disablePoint = 1024;
if ($(window).width() < disablePoint) {
// Do nothing //
}
else {
var dataanimation = {
fadein: 'fade-in',
fadeout: 'fade-out',
slidedownfromtop: 'slide-down-from-top',
slideinfromright: 'slide-in-from-right',
slideupfrombottom: 'slide-up-from-bottom',
slideinfromleft: 'slide-in-from-left',
scaleup: 'scale-up',
scaledown: 'scale-down',
rotate: 'rotate',
flipyaxis: 'flip-y-axis',
flipxaxis: 'flip-x-axis'
};
var cssEase = {
'ease': 'ease',
'in': 'ease-in',
'out': 'ease-out',
'in-out': 'ease-in-out',
'snap': 'cubic-bezier(0,1,.5,1)',
// Penner equations
'easeOutCubic': 'cubic-bezier(.215,.61,.355,1)',
'easeInOutCubic': 'cubic-bezier(.645,.045,.355,1)',
'easeInCirc': 'cubic-bezier(.6,.04,.98,.335)',
'easeOutCirc': 'cubic-bezier(.075,.82,.165,1)',
'easeInOutCirc': 'cubic-bezier(.785,.135,.15,.86)',
'easeInExpo': 'cubic-bezier(.95,.05,.795,.035)',
'easeOutExpo': 'cubic-bezier(.19,1,.22,1)',
'easeInOutExpo': 'cubic-bezier(1,0,0,1)',
'easeInQuad': 'cubic-bezier(.55,.085,.68,.53)',
'easeOutQuad': 'cubic-bezier(.25,.46,.45,.94)',
'easeInOutQuad': 'cubic-bezier(.455,.03,.515,.955)',
'easeInQuart': 'cubic-bezier(.895,.03,.685,.22)',
'easeOutQuart': 'cubic-bezier(.165,.84,.44,1)',
'easeInOutQuart': 'cubic-bezier(.77,0,.175,1)',
'easeInQuint': 'cubic-bezier(.755,.05,.855,.06)',
'easeOutQuint': 'cubic-bezier(.23,1,.32,1)',
'easeInOutQuint': 'cubic-bezier(.86,0,.07,1)',
'easeInSine': 'cubic-bezier(.47,0,.745,.715)',
'easeOutSine': 'cubic-bezier(.39,.575,.565,1)',
'easeInOutSine': 'cubic-bezier(.445,.05,.55,.95)',
'easeInBack': 'cubic-bezier(.6,-.28,.735,.045)',
'easeOutBack': 'cubic-bezier(.175, .885,.32,1.275)',
'easeInOutBack': 'cubic-bezier(.68,-.55,.265,1.55)'
};
//GLOBAL TRANSITION VARIABLES
var opacityZero = {
'opacity': '0',
'-ms-opacity': '0',
'-webkit-opacity': '0',
'-moz-opacity': '0',
'-o-opacity': '0',
};
var opacityFull = {
'opacity': '1',
'-ms-opacity': '1',
'-webkit-opacity': '1',
'-moz-opacity': '1',
'-o-opacity': '1',
};
// DEFAULT ATTRIBUTES FOR ELEMENTS BASED ON ANIMATION TYPE
$(document).ready(function() {
$('html, body').css('overflow-x', 'hidden');
$('html').css('height', '100%');
$('.cre-animate').css({'position': 'relative'});
$('.cre-animate').each(function() {
var dataanimationUser = $(this).data('animation');
if (dataanimationUser == dataanimation.fadein) {
$(this).css(opacityZero);
}
if (dataanimationUser == dataanimation.fadeout) {
$(this).css(opacityFull);
}
if (dataanimationUser == dataanimation.slideinfromright) {
$(this).css({'right': '-400px'}).css(opacityZero);
}
if (dataanimationUser == dataanimation.slideinfromleft) {
$(this).css({'left': '-400px'}).css(opacityZero);
}
if (dataanimationUser == dataanimation.slideupfrombottom) {
$(this).css({'bottom': '-200px'}).css(opacityZero);
}
if (dataanimationUser == dataanimation.slidedownfromtop) {
$(this).css({'top': '-200px'}).css(opacityZero);
}
if (dataanimationUser == dataanimation.rotate) {
$(this).css(opacityZero);
}
if (dataanimationUser == dataanimation.scaleup) {
var datastartscale = 0;
var startScale = {
'transform': 'scale(' + datastartscale + ')',
'-ms-transform': 'scale(' + datastartscale + ')',
'-webkit-transform': 'scale(' + datastartscale + ')',
'-moz-transform': 'scale(' + datastartscale + ')',
'-o-transform': 'scale(' + datastartscale + ')'
};
$(this).css(startScale).css(opacityZero);
}
if (dataanimationUser == dataanimation.scaledown) {
var datastartscale2 = 2;
var startScale2 = {
'transform': 'scale(' + datastartscale2 + ')',
'-ms-transform': 'scale(' + datastartscale2 + ')',
'-webkit-transform': 'scale(' + datastartscale2 + ')',
'-moz-transform': 'scale(' + datastartscale2 + ')',
'-o-transform': 'scale(' + datastartscale2 + ')'
};
$(this).css(startScale2).css(opacityZero);
}
if (dataanimationUser == dataanimation.flipyaxis) {
var flipY = {
'transform': 'rotateY(180deg)',
'-ms-transform': 'rotateY(180deg)',
'-webkit-transform': 'rotateY(180deg)',
'-moz-transform': 'rotateY(180deg)',
'-o-transform': 'rotateY(180deg)'
};
$(this).css(flipY).css(opacityZero);
}
if (dataanimationUser == dataanimation.flipxaxis) {
var flipX = {
'transform': 'rotateX(180deg)',
'-ms-transform': 'rotateX(180deg)',
'-webkit-transform': 'rotateX(180deg)',
'-moz-transform': 'rotateX(180deg)',
'-o-transform': 'rotateX(180deg)'
};
$(this).css(flipX).css(opacityZero);
}
});
});
// ONSCROLL ANIMATION OF ELEMENTS
$(window).on('scroll load', function() {
$('.cre-animate').each(function() {
// GET ANIMATION TYPE FROM ELEMENT
var dataanimationUser = $(this).data('animation');
// CALCULATES THE TRIGGER POINT USING THE OFFSET
var dataoffset = $(this).data('offset');
var parsePercent = parseFloat(dataoffset);
var decimal = parsePercent / 100;
var triggerpoint = $(window).height() * decimal + $(window).scrollTop(); // Call point in Viewport: viewport height * decimal(%) + pixels to top of window
var element = $(this).offset().top;
if (dataanimationUser == dataanimation.slidedownfromtop) {
element = element + 200;
}
if (dataanimationUser == dataanimation.slideupfrombottom) {
element = element - 200;
}
if (dataanimationUser == dataanimation.scaleup) {
element = element - $(this).height() / 2;
}
if (dataanimationUser == dataanimation.scaledown) {
element = element + $(this).height() / 2;
}
// ASSIGNS VALUES FOR THE EASING TYPES
var dataeasing = $(this).data('easing');
if (cssEase[dataeasing]) {
dataeasing = cssEase[dataeasing];
}
// TRANSITION OPTIONS ARE CREATED
var datadelay = $(this).data('delay');
var dataspeed = $(this).data('speed');
var transitionOptions = {
'transition-duration': dataspeed + 'ms',
'-ms-transition-duration': dataspeed + 'ms',
'-webkit-transition-duration': dataspeed + 'ms',
'-moz-transition-duration': dataspeed + 'ms',
'-o-transition-duration': dataspeed + 'ms',
'transition-timing-function': dataeasing,
'-ms-transition-timing-function': dataeasing,
'-webkit-transition-timing-function': dataeasing,
'-moz-transition-timing-function': dataeasing,
'-o-transition-timing-function': dataeasing,
'transition-delay': datadelay + 'ms',
'-ms-transition-delay': datadelay + 'ms',
'-webkit-transition-delay': datadelay + 'ms',
'-moz-transition-delay': datadelay + 'ms',
'-o-transition-delay': datadelay + 'ms'
};
// TRIGGERS THE ANIMATIONS
if (element < triggerpoint) {
// FADE IN
if (dataanimationUser == dataanimation.fadein) {
$(this).css(opacityFull).css(transitionOptions);
}
// FADE OUT
if (dataanimationUser == dataanimation.fadeout) {
$(this).css(opacityZero).css(transitionOptions);
}
// SLIDE DOWN FROM TOP
if (dataanimationUser == dataanimation.slidedownfromtop) {
$(this).css({'top': '0'}).css(opacityFull).css(transitionOptions);
}
// SLIDE UP FROM BOTTOM
if (dataanimationUser == dataanimation.slideupfrombottom) {
$(this).css({'bottom': '0'}).css(opacityFull).css(transitionOptions);
}
// SLIDE IN FROM RIGHT
if (dataanimationUser == dataanimation.slideinfromright) {
$(this).css({'right': '0'}).css(opacityFull).css(transitionOptions);
}
// SLIDE IN FROM LEFT
if (dataanimationUser == dataanimation.slideinfromleft) {
$(this).css({'left': '0'}).css(opacityFull).css(transitionOptions);
}
// SCALE UP
if (dataanimationUser == dataanimation.scaleup) {
var dataendscale = 1;
var endScale = {
'transform': 'scale(' + dataendscale + ')',
'-ms-transform': 'scale(' + dataendscale + ')',
'-webkit-transform': 'scale(' + dataendscale + ')',
'-moz-transform': 'scale(' + dataendscale + ')',
'-o-transform': 'scale(' + dataendscale + ')'
};
$(this).css(endScale).css(opacityFull).css(transitionOptions);
}
// SCALE DOWN
if (dataanimationUser == dataanimation.scaledown) {
var dataendscale2 = 1;
var endScale2 = {
'transform': 'scale(' + dataendscale2 + ')',
'-ms-transform': 'scale(' + dataendscale2 + ')',
'-webkit-transform': 'scale(' + dataendscale2 + ')',
'-moz-transform': 'scale(' + dataendscale2 + ')',
'-o-transform': 'scale(' + dataendscale2 + ')'
};
$(this).css(endScale2).css(opacityFull).css(transitionOptions);
}
// ROTATE
if (dataanimationUser == dataanimation.rotate) {
var degrees = 360;
var rotation = {
'transform': 'rotate(' + degrees + 'deg)',
'-ms-transform': 'rotate(' + degrees + 'deg)',
'-webkit-transform': 'rotate(' + degrees + 'deg)',
'-moz-transform': 'rotate(' + degrees + 'deg)',
'-o-transform': 'rotate(' + degrees + 'deg)'
};
$(this).css(rotation).css(opacityFull).css(transitionOptions);
}
// FLIP Y AXIS
if (dataanimationUser == dataanimation.flipyaxis) {
var flipY = {
'transform': 'rotateY(360deg)',
'-ms-transform': 'rotateY(360deg)',
'-webkit-transform': 'rotateY(360deg)',
'-moz-transform': 'rotateY(360deg)',
'-o-transform': 'rotateY(360deg)'
};
$(this).css(flipY).css(opacityFull).css(transitionOptions);
}
// FLIP X AXIS
if (dataanimationUser == dataanimation.flipxaxis) {
var flipX = {
'transform': 'rotateX(360deg)',
'-ms-transform': 'rotateX(360deg)',
'-webkit-transform': 'rotateX(360deg)',
'-moz-transform': 'rotateX(360deg)',
'-o-transform': 'rotateX(360deg)'
};
$(this).css(flipX).css(opacityFull).css(transitionOptions);
}
}
});
});
}
}(jQuery));