Guenni007

avia-snippet-sticky-header-bluepi

Jun 25th, 2020
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (function($)
  2. {  
  3.     "use strict";
  4.    
  5.     $(document).ready(function()
  6.     {  
  7.         // decreases header size when user scrolls down
  8.         avia_header_size();
  9.     });
  10.    
  11.    
  12.     function av_change_class($element, change_method, class_name)
  13.     {  
  14.         if($element[0].classList)
  15.         {
  16.             if(change_method == "add")
  17.             {
  18.                 $element[0].classList.add(class_name);
  19.             }
  20.             else
  21.             {
  22.                 $element[0].classList.remove(class_name);
  23.             }
  24.         }
  25.         else
  26.         {
  27.             if(change_method == "add")
  28.             {
  29.                 $element.addClass(class_name);
  30.             }
  31.             else
  32.             {
  33.                 $element.removeClass(class_name);
  34.             }
  35.         }
  36.     }
  37.    
  38.    
  39.     function avia_header_size()
  40.     {
  41.         var win             = $(window),
  42.             header          = $('.html_header_top.html_header_sticky #header'),
  43.             unsticktop      = $('.av_header_unstick_top');
  44.            
  45.         if(!header.length && !unsticktop.length) return;
  46.        
  47.         var logo            = $('#header_main .container .logo img, #header_main .container .logo a'),
  48.             elements        = $('#header_main .container:not(#header_main_alternate>.container), #header_main .main_menu ul:first-child > li > a:not(.avia_mega_div a, #header_main_alternate a), #header_main #menu-item-shop .cart_dropdown_link'),
  49.             el_height       = $(elements).filter(':first').height(),
  50.             isMobile        = $.avia_utilities.isMobile,
  51.             scroll_top      = $('#scroll-top-link'),
  52.             transparent     = header.is('.av_header_transparency'),
  53.             shrinking       = header.is('.av_header_shrinking'),
  54.             topbar_height   = header.find('#header_meta').outerHeight(),
  55.             search_form     = $('#top #avia-menu #searchform > div'),
  56.             set_height      = function()
  57.             {  
  58.                 var st = win.scrollTop(), newH = 0, st_real = st;
  59.                
  60.                 if(unsticktop) st -= topbar_height;
  61.                 if(st < 0) st = 0;
  62.                
  63.                 if(shrinking)
  64.                 {
  65.                     if(st < el_height/2)
  66.                     {
  67.                         newH = el_height - st;
  68.                         if(st <= 0){
  69.                             newH = el_height;
  70.                         }
  71.                        
  72.                         av_change_class(header, 'remove', 'header-scrolled');
  73.                         //header.removeClass('header-scrolled');
  74.                     }
  75.                     else
  76.                     {
  77.                         newH = el_height/2;
  78.                         //header.addClass('header-scrolled');
  79.                         av_change_class(header, 'add', 'header-scrolled');
  80.                     }
  81.                    
  82.                     if(st - 30 < el_height)
  83.                     {
  84.                         av_change_class(header, 'remove', 'header-scrolled-full');
  85.                     }
  86.                     else
  87.                     {
  88.                         av_change_class(header, 'add', 'header-scrolled-full');
  89.                     }
  90.                                    
  91.                     elements.css({'height': newH + 'px', 'lineHeight': newH + 'px'});
  92.                     logo.css({'maxHeight': newH + 'px'});
  93.                     search_form.css({'top': (0.48*newH) - 20 + 'px'});
  94.                 }
  95.                
  96.                 if(unsticktop.length)
  97.                 {
  98.                     if( st <= 0)
  99.                     {
  100.                         if(st_real <= 0) st_real = 0;
  101.                         unsticktop.css({"margin-top":"-"+st_real+"px"});
  102.                     }
  103.                     else
  104.                     {
  105.                         unsticktop.css({"margin-top":"-"+topbar_height+"px"});
  106.                     }
  107.                 }
  108.                
  109.                 if(transparent)
  110.                 {  
  111.                     if(st > 50)
  112.                     {  
  113.                         //header.removeClass('av_header_transparency');
  114.                         av_change_class(header, 'remove', 'av_header_transparency');
  115.                     }
  116.                     else
  117.                     {
  118.                         //header.addClass('av_header_transparency');
  119.                         av_change_class(header, 'add', 'av_header_transparency');
  120.                     }
  121.                 }
  122.  
  123.                
  124.             };
  125.  
  126.             if($('body').is('.avia_deactivate_menu_resize')) shrinking = false;
  127.            
  128.             if(!transparent && !shrinking && !unsticktop.length) return;
  129.            
  130.             win.on( 'debouncedresize',  function(){ el_height = $(elements).attr('style',"").filter(':first').height(); set_height(); } );
  131.             win.on( 'scroll',  function(){ window.requestAnimationFrame( set_height )} );
  132.             set_height();
  133.     }
  134. })(jQuery);
Add Comment
Please, Sign In to add comment