芝麻web文件管理V1.00
编辑当前文件:/var/www/cognitio.in/wp-content/plugins/Ultimate_VC_Addons/assets/js/sticky-section.js
//(function ($) { jQuery( document ).ready( function ( $ ) { const _window = $( window ); let _windowsize = _window.width(); let resize_flag = -1; const top_for_row = 0; inside_row_(); sticky_relocate(); _window.resize( function () { resize_flag = 0; _windowsize = _window.width(); sticky_relocate(); //inside_row_(); } ); _window.bind( 'scroll', function () { sticky_relocate(); } ); function inside_row_() { const row_elements = $( 'div.ult-sticky-anchor' ); row_elements.each( function () { const $this = $( this ); const ult_row_spacer = $this.closest( '.ult_row_spacer' ); const ult_sticky = $this.find( '.ult-sticky' ); const stick_behaviour = ult_sticky.data( 'stick_behaviour' ); const support = ult_sticky.data( 'support' ); if ( stick_behaviour != 'stick_with_scroll_row' && support == 'no' ) { return; } /*var fullwidth_row = false; //for Browser full width row if ( $this.parents('.upb-background-text').length ){ // has parent fullwidth_row = true; }*/ const global_height = 0; //for resize let gutter = ult_sticky.data( 'gutter' ); const gutter_class = ult_sticky.data( 'sticky_gutter_class' ); const gutter_id = ult_sticky.data( 'sticky_gutter_id' ); const mobile = ult_sticky.data( 'mobile' ); //if ( stick_behaviour == 'stick_with_scroll_row' ) { gutter = ult_explode_offset( global_height, gutter, gutter_class, gutter_id ); let parent = $this.closest( '.wpb_column' ).closest( '.vc_row' ); //parent();//$this.closest('.vc_row'); const self_offset = $this.parent().offset().top; //alert(parent_offset); $this.addClass( 'ult_stick_to_row' ); parent.addClass( 'ult_s_container' ); //alert(parent); //alert(mobile); if ( support == 'yes' ) { parent = 'body'; } if ( _windowsize < 768 && mobile == 'no' ) { } else { $this.fixTo( parent, { //className : 'is-stuck', //zIndex: 10, top: gutter, useNativeSticky: false, } ); } } ); } /***** inside row ******/ /*function inside_row () { var row_elements = $('div.ult-sticky-anchor'); row_elements.each(function(){ var $this = $(this); var ult_row_spacer = $this.closest('.ult_row_spacer'); var ult_sticky = $this.find('.ult-sticky'); var stick_behaviour = ult_sticky.data('stick_behaviour'); if ( stick_behaviour != 'stick_with_scroll_row' ){ return; } var fullwidth_row = false; //for Browser full width row if ( $this.parents('.upb-background-text').length ){ // has parent fullwidth_row = true; } var global_height = 0; //for resize var gutter = ult_sticky.data('gutter'); var gutter_class = ult_sticky.data('sticky_gutter_class'); var gutter_id = ult_sticky.data('sticky_gutter_id'); var mobile = ult_sticky.data('mobile'); //if ( stick_behaviour == 'stick_with_scroll_row' ) { gutter = ult_explode_offset( global_height, gutter, gutter_class, gutter_id ); var parent = $this.closest(".wpb_column").parent();//$this.closest('.vc_row'); var self_offset = $this.parent().offset().top; //alert(parent_offset); $this.addClass("ult_stick_to_row"); parent.addClass("ult_s_container"); //alert(parent); //alert(mobile); if( _windowsize < 768 && mobile == 'no'){ $this.trigger("sticky_kit:detach") return; }else{ $this.trigger("sticky_kit:recalc") $this.stick_in_parent({parent:".ult_s_container", offset_top:gutter, spacer: ult_row_spacer}) .on("sticky_kit:stick", function(e) { //console.log("has stuck!", e.target); //console.log( $(e.target).closest(".wpb_column").parent().css("display", "flex") ); $(e.target).css("top", "0"); //console.log($(e.target).offset().top); $(e.target).closest(".wpb_column").parent().css("display", "flex"); }) .on("sticky_kit:unstick", function(e) { //console.log("has unstuck!", e.target); //$(e.target).closest(".vc_row").css("display", "") $(e.target).closest(".wpb_column").parent().css("display", "") }) .on("sticky_kit:bottom", function(e) { //console.log("has stuck!", e.target); $(e.target).addClass("is_bottom"); $(e.target).css("bottom",""); // var s = $(window).scrollTop(); // var y = $(e.target).parent().offset().top; // var z = s-y+50; $(e.target).css('top', top_for_row + 'px'); }) .on("sticky_kit:unbottom", function(e) { //console.log("has unstuck!", e.target); $(e.target).removeClass("is_bottom"); }); } }); }*/ /****** inside row end *******/ function sticky_relocate() { elements = $( 'div.ult-sticky-anchor' ); elements.each( function () { const $this = $( this ); const ult_sticky = $this.find( '.ult-sticky' ); //var fullwidth_row = false; //for Browser full width row // if ( $this.parents('.upb-background-text').length ){ // has parent // fullwidth_row = true; // } const mobile = ult_sticky.data( 'mobile' ); const ult_space = $this.find( '.ult-space' ); if ( _windowsize < 768 && mobile == 'no' ) { ult_sticky.removeClass( 'ult-stick' ); ult_space.css( 'height', '' ); $this.removeClass( 'ult-permanent-flag' ); return; } let window_top = _window.scrollTop(); let div_top = $this.offset().top; const win_height = _window.height(); const stick_behaviour = ult_sticky.data( 'stick_behaviour' ); const support = ult_sticky.data( 'support' ); // if( fullwidth_row = true && $this.hasClass( "is_stuck" ) ){ // var s = _window.scrollTop(); // var parent_height = $this.closest(".wpb_column").parent().parent().innerHeight(); // var parent_offset = $this.closest(".wpb_column").parent().parent().offset().top; // var parent_offset_height = parseInt(parent_offset) + parseInt(parent_height); // var y = $this.parent().offset().top; // var z = s-y+50; // var anchor_height = s + 50 + $this.outerHeight(); // console.log(parent_offset); // console.log(window_top); // if( anchor_height < parent_offset_height ){ // top_for_row = z; // $this.css('position','absolute'); // $this.css('top',z + 'px'); // } // return; // } if ( stick_behaviour == 'stick_with_scroll_row' || support == 'yes' ) { return; } let div_width = $this.parent().width(); const div_height = ult_sticky.height(); //$(this).parents(".vc_row").height(); const global_height = 0; //for resize let gutter = ult_sticky.data( 'gutter' ); const gutter_class = ult_sticky.data( 'sticky_gutter_class' ); const gutter_id = ult_sticky.data( 'sticky_gutter_id' ); const lr_position = ult_sticky.data( 'lr_position' ); const lr_value = ult_sticky.data( 'lr_value' ); const sticky_customwidth = ult_sticky.data( 'sticky_customwidth' ); const sticky_width = ult_sticky.data( 'sticky_width' ); const sticky_position = ult_sticky.data( 'sticky_position' ); let flag = -1; //for bottom position //var sticky_element = $(this).find('ult-sticky'); gutter = ult_explode_offset( global_height, gutter, gutter_class, gutter_id ); if ( sticky_position == 'top' ) { window_top = parseInt( window_top ) + parseInt( gutter ); } else { window_top = parseInt( window_top ) + parseInt( win_height ) - parseInt( div_height ) - parseInt( gutter ); div_top = parseInt( div_top ); //+ parseInt(div_height); } if ( sticky_width == 'fullwidth' ) { div_width = '100%'; } else if ( sticky_width == 'customwidth' ) { div_width = sticky_customwidth; } const custom_css = {}; const div_width_pro = 'width'; custom_css[ sticky_position ] = gutter; custom_css[ div_width_pro ] = div_width; // for permanent if ( stick_behaviour == 'stick_permanent' ) { custom_css[ lr_position ] = lr_value; } const custom_css_t = {}; custom_css_t[ sticky_position ] = ''; custom_css_t[ div_width_pro ] = ''; if ( stick_behaviour == 'stick_permanent' && ! $this.hasClass( 'ult-permanent-flag' ) ) { $this.addClass( 'ult-permanent-flag' ); ult_sticky.addClass( 'ult-stick' ).css( custom_css ); //$this.parents('.wpb_column').css('min-height', '0px'); } //alert(stick_behaviour); if ( stick_behaviour == 'stick_with_scroll' && window_top > div_top ) { //alert(resize_flag); flag = 0; if ( ! $this.hasClass( 'ult-flag' ) || resize_flag == 0 ) { $this.addClass( 'ult-flag' ); //resize_flag = -1; if ( sticky_width == 'fullwidth' ) { ult_sticky .addClass( 'ult-stick-full-width' ) .css( custom_css ); //div_height = $(this).find('.ult-sticky').height(); $this.find( '.ult-space' ).css( 'height', div_height ); flag = 1; } else { ult_sticky.addClass( 'ult-stick' ).css( custom_css ); //div_height = $(this).find('.ult-sticky').height(); $this.find( '.ult-space' ).css( 'height', div_height ); flag = 1; } // checked fullwidth end else } //checked ult flag end if } else if ( stick_behaviour == 'stick_with_scroll' ) { if ( $this.hasClass( 'ult-flag' ) ) { $this.removeClass( 'ult-flag' ); if ( sticky_width == 'fullwidth' ) { ult_sticky .removeClass( 'ult-stick-full-width' ) .css( custom_css_t ); $this.find( '.ult-space' ).css( 'height', '' ); } else { ult_sticky .removeClass( 'ult-stick' ) .css( custom_css_t ); $this.find( '.ult-space' ).css( 'height', '' ); } } //checked ult flag if end } // scroll top else end /* if( sticky_position == 'bottom' && flag != 1 && !$this.hasClass('ult-permanent-flag') ) { //var scroll_flag = -1; var temp_top = ""; if( window_top > div_top) { //scroll_flag = 0; temp_top = window_top-div_top; } else { // alert(); temp_top = 0; } if( window_top > div_top ) { div_height = ult_sticky.height(); } else { div_height = $this.find('.ult-space').height();} if( div_height - temp_top <= 0 ){ div_height = 0; } else{ div_height = div_height - temp_top; } $this.find('.ult-space').css('height', div_height); }*/ } ); resize_flag = -1; } function ult_explode_offset( global_height, gutter, gutter_class, gutter_id ) { // gutter class and id height calculate if ( ! gutter_class ) { gutter_class = 'null'; } else { const gutter_class_arr = gutter_class.split( ' ' ); jQuery.each( gutter_class_arr, function ( i, val ) { global_height = parseInt( global_height ) + $( val ).outerHeight(); } ); } if ( ! gutter_id ) { gutter_id = 'null'; } else { const gutter_id_arr = gutter_id.split( ' ' ); jQuery.each( gutter_id_arr, function ( i, val ) { global_height = parseInt( global_height ) + $( val ).outerHeight(); } ); } if ( ! gutter ) { gutter = global_height; } else { gutter = parseInt( gutter ) + parseInt( global_height ); } return gutter; } //$(window).scroll(sticky_relocate); //sticky_relocate(); } ); //})(jQuery);