Current File : /home/n742ef5/royalanteam.com/wp-content/plugins/Ultimate_VC_Addons/assets/js/vhparallax.js |
/*
Plugin: jQuery Parallax
Version 1.1.3
Author: Ian Lunn
Twitter: @IanLunn
Author URL: http://www.ianlunn.co.uk/
Plugin URL: http://www.ianlunn.co.uk/plugins/jquery-parallax/
Dual licensed under the MIT and GPL licenses:
http://www.opensource.org/licenses/mit-license.php
http://www.gnu.org/licenses/gpl.html
*/
( function ( $ ) {
const $window = jQuery( window );
let windowHeight = $window.height();
$window.resize( function () {
windowHeight = $window.height();
} );
jQuery.fn.vparallax = function ( xpos, speedFactor, outerHeight ) {
const $this = jQuery( this );
let getHeight;
let firstTop;
const paddingTop = 0;
//get the starting position of each element to have parallax applied to it
/*$this.each(function(){
//firstTop = $this.offset().top;
});*/
if ( outerHeight ) {
getHeight = function ( jqo ) {
return jqo.outerHeight( true );
};
} else {
getHeight = function ( jqo ) {
return jqo.height();
};
}
// setup defaults if arguments aren't specified
if ( arguments.length < 1 || xpos === null ) xpos = '50%';
if ( arguments.length < 2 || speedFactor === null ) speedFactor = 0.5;
if ( arguments.length < 3 || outerHeight === null ) outerHeight = true;
//speedFactor = (jQuery(this).data('parallax_sense'))/100;
// function to be called whenever the window is scrolled or resized
function update() {
const pos = $window.scrollTop();
$this.each( function () {
firstTop = jQuery( this ).offset().top;
const $element = jQuery( this );
const top = $element.offset().top;
const height = getHeight( $element );
// Check if totally above or totally below viewport
if ( top + height < pos || top > pos + windowHeight ) {
return;
}
let f = Math.round( ( firstTop - pos ) * speedFactor );
//if(firstTop >= windowHeight){
//f = -f-(speedFactor*windowHeight);
//}else{
f = -f;
//}
if ( jQuery( this ).parent().hasClass( 'vcpb-mlvp-jquery' ) )
var is_img_parallax_disable_on_mobile = jQuery( this )
.parent()
.parent()
.data( 'img-parallax-mobile-disable' )
.toString();
else
var is_img_parallax_disable_on_mobile = jQuery( this )
.parent()
.data( 'img-parallax-mobile-disable' )
.toString();
if (
! /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
navigator.userAgent
)
)
var is_mobile = 'false';
else var is_mobile = 'true';
if (
is_img_parallax_disable_on_mobile == 'true' &&
is_mobile == 'true'
)
var disable_row_parallax_effect = 'true';
else var disable_row_parallax_effect = 'false';
if ( disable_row_parallax_effect == 'false' ) {
//f = -f;
jQuery( this ).css(
'backgroundPosition',
xpos + ' ' + f + 'px'
);
}
} );
}
$window.bind( 'scroll', update ).resize( update );
update();
};
jQuery.fn.hparallax = function ( xpos, speedFactor, outerHeight ) {
const $this = jQuery( this );
let getHeight;
let firstTop;
const paddingTop = 0;
if ( outerHeight ) {
getHeight = function ( jqo ) {
return jqo.outerHeight( true );
};
} else {
getHeight = function ( jqo ) {
return jqo.height();
};
}
// setup defaults if arguments aren't specified
if ( arguments.length < 1 || xpos === null ) xpos = '50%';
if ( arguments.length < 2 || speedFactor === null ) speedFactor = 0.5;
if ( arguments.length < 3 || outerHeight === null ) outerHeight = true;
speedFactor = jQuery( this ).data( 'parallax_sense' ) / 100;
xpos = '0px';
let prev_pos = $window.scrollTop();
// function to be called whenever the window is scrolled or resized
function update() {
const pos = $window.scrollTop();
$this.each( function () {
firstTop = jQuery( this ).offset().top;
const $element = jQuery( this );
const top = $element.offset().top;
const height = getHeight( $element );
if ( top + height < pos || top > pos + windowHeight ) {
return;
}
const bg = jQuery( this ).css( 'backgroundPosition' );
const pxpos = bg.indexOf( 'px' );
const bgxpos = bg.substring( 0, pxpos );
let f = 0;
if ( prev_pos - pos <= 0 ) {
f =
parseInt( bgxpos ) -
parseInt( speedFactor * Math.abs( prev_pos - pos ) );
} else {
f =
parseInt( bgxpos ) +
parseInt( speedFactor * ( prev_pos - pos ) );
if ( f > 0 ) f = 0;
}
const is_img_parallax_disable_on_mobile = jQuery( this )
.parent()
.data( 'img-parallax-mobile-disable' )
.toString();
if (
! /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
navigator.userAgent
)
)
var is_mobile = 'false';
else var is_mobile = 'true';
if (
is_mobile == 'true' &&
is_img_parallax_disable_on_mobile == 'true'
)
var disable_row_effect = 'true';
else var disable_row_effect = 'false';
if ( disable_row_effect == 'false' ) {
jQuery( this ).css(
'backgroundPosition',
f + 'px ' + xpos
);
}
/*if(this).hasClass('upb_bg_size_automatic'){
jQuery(this).each(function(){
var vh = jQuery(window).outerHeight();
var bh = jQuery(this).parent().outerHeight();
var speed = jQuery(this).data('parallax_sense');
var bw = jQuery(this).outerWidth()
var ih = (((vh+bh)/100)*speed)+bw;
jQuery(this).css('background-size',ih+'px auto');
})
}*/
} );
prev_pos = pos;
}
$window.bind( 'scroll', update ).resize( update );
update();
};
} )( jQuery );
// Auto Initialization
//if( ! jQuery.browser.mobile){
jQuery( document ).ready( function () {
if (
! /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
navigator.userAgent
)
)
var is_mobile = 'false';
else var is_mobile = 'true';
jQuery( '.vcpb-mlvp-jquery' ).each( function () {
const selector = jQuery( this );
//var sense = selector.data('parallax_sense');
//var incr =(selector.outerWidth()*(sense/100));
let img_list = selector.data( 'img-array' );
img_list = img_list.split( ',' );
const img_list_len = img_list.length;
for ( let i = 0; i < img_list_len; i++ ) {
jQuery( selector ).prepend(
'<div class="vertical_layer_parallax" style="position:absolute;background-image:url(' +
img_list[ i ] +
');"></div>'
);
}
const hp = jQuery( selector ).find( '.vertical_layer_parallax' );
hp.css( { 'max-width': 'none', position: 'absolute' } );
//hp.css('min-width',(hp.parent().outerWidth())+incr+'px');
} );
jQuery( '.vcpb-mlvp-jquery' ).each( function () {
let layer_count = jQuery( this ).find( '.vertical_layer_parallax' )
.length;
let sense = parseInt( jQuery( this ).data( 'parallax_sense' ) ) / 100;
const is_img_parallax_disable_on_mobile = jQuery( this )
.parent()
.data( 'img-parallax-mobile-disable' )
.toString();
layer_count = sense / layer_count;
sense = 0;
if (
is_mobile == 'true' &&
is_img_parallax_disable_on_mobile == 'true'
)
var disable_row_effect = 'true';
else var disable_row_effect = 'false';
jQuery( this )
.find( '.vertical_layer_parallax' )
.each( function ( index ) {
sense += layer_count;
jQuery( this )
.css( {
height: jQuery( this ).parent().outerHeight() + 'px',
width: jQuery( this ).parent().outerWidth() + 'px',
} )
.attr( 'data-p-sense', sense );
if ( disable_row_effect == 'false' )
jQuery( this ).vparallax( '0%', sense );
} );
} );
//jQuery('.vcpb-vz-jquery').vparallax();
jQuery( '.vcpb-vz-jquery' ).each( function () {
const is_img_parallax_disable_on_mobile = jQuery( this )
.parent()
.data( 'img-parallax-mobile-disable' );
if (
is_mobile == 'true' &&
is_img_parallax_disable_on_mobile == 'true'
)
var disable_row_effect = 'true';
else var disable_row_effect = 'false';
if ( disable_row_effect == 'false' )
jQuery( this ).vparallax(
'50%',
jQuery( this ).data( 'parallax_sense' ) / 100
);
} );
jQuery( '.vcpb-hz-jquery' ).hparallax();
if ( jQuery( '.vcpb-hz-jquery' ).length > 0 ) {
setTimeout( function () {
jQuery( window ).scrollTop( 0 );
}, 1000 );
}
} );
//}