Вход Регистрация
Файл: static/plugins/base/js/jquery.sticky.js
Строк: 154
<?php
// Sticky Plugin v1.0.0 for jQuery
// =============
// Author: Anthony Garand
// Improvements by German M. Bravo (Kronuz) and Ruud Kamphuis (ruudk)
// Improvements by Leonardo C. Daronco (daronco)
// Created: 2/14/2011
// Date: 2/12/2012
// Website: http://labs.anthonygarand.com/sticky
// Description: Makes an element on the page stick on the screen as you scroll
//       It will only set the 'top' and 'position' of your element, you
//       might need to adjust the width in some cases.

(function($) {
  var 
defaults = {
      
topSpacing0,
      
bottomSpacing0,
      
className'is-sticky',
      
wrapperClassName'sticky-wrapper',
      
centerfalse,
      
getWidthFrom''
    
},
    
$window = $(window),
    
$document = $(document),
    
sticked = [],
    
windowHeight $window.height(),
    
scroller = function() {
      var 
scrollTop $window.scrollTop(),
        
documentHeight $document.height(),
        
dwh documentHeight windowHeight,
        
extra = (scrollTop dwh) ? dwh scrollTop 0;

      for (var 
0sticked.lengthi++) {
        var 
sticked[i],
          
elementTop s.stickyWrapper.offset().top,
          
etse elementTop s.topSpacing extra;

        if (
scrollTop <= etse) {
          if (
s.currentTop !== null) {
            
s.stickyElement
              
.css('position''')
              .
css('top''');
            
s.stickyElement.parent().removeClass(s.className);
            
s.currentTop null;
          }
        }
        else {
          var 
newTop documentHeight s.stickyElement.outerHeight()
            - 
s.topSpacing s.bottomSpacing scrollTop extra;
          if (
newTop 0) {
            
newTop newTop s.topSpacing;
          } else {
            
newTop s.topSpacing;
          }
          if (
s.currentTop != newTop) {
            
s.stickyElement
              
.css('position''fixed')
              .
css('top'newTop);

            if (
typeof s.getWidthFrom !== 'undefined') {
              
s.stickyElement.css('width', $(s.getWidthFrom).width());
            }

            
s.stickyElement.parent().addClass(s.className);
            
s.currentTop newTop;
          }
        }
      }
    },
    
resizer = function() {
      
windowHeight $window.height();
    },
    
methods = {
      
init: function(options) {
        var 
= $.extend(defaultsoptions);
        return 
this.each(function() {
          var 
stickyElement = $(this);

          
stickyId stickyElement.attr('id');
          
wrapper = $('<div></div>')
            .
attr('id'stickyId '-sticky-wrapper')
            .
addClass(o.wrapperClassName);
          
stickyElement.wrapAll(wrapper);

          if (
o.center) {
            
stickyElement.parent().css({width:stickyElement.outerWidth(),marginLeft:"auto",marginRight:"auto"});
          }

          if (
stickyElement.css("float") == "right") {
            
stickyElement.css({"float":"none"}).parent().css({"float":"right"});
          }

          var 
stickyWrapper stickyElement.parent();
          
stickyWrapper.css('height'stickyElement.outerHeight());
          
sticked.push({
            
topSpacingo.topSpacing,
            
bottomSpacingo.bottomSpacing,
            
stickyElementstickyElement,
            
currentTopnull,
            
stickyWrapperstickyWrapper,
            
classNameo.className,
            
getWidthFromo.getWidthFrom
          
});
        });
      },
      
updatescroller
    
};

  
// should be more efficient than using $window.scroll(scroller) and $window.resize(resizer):
  
if (window.addEventListener) {
    
window.addEventListener('scroll'scrollerfalse);
    
window.addEventListener('resize'resizerfalse);
  } else if (
window.attachEvent) {
    
window.attachEvent('onscroll'scroller);
    
window.attachEvent('onresize'resizer);
  }

  $.fn.
sticky = function(method) {
    if (
methods[method]) {
      return 
methods[method].apply(this, Array.prototype.slice.call(arguments1));
    } else if (
typeof method === 'object' || !method ) {
      return 
methods.init.applythisarguments );
    } else {
      $.
error('Method ' method ' does not exist on jQuery.sticky');
    }
  };
  $(function() {
    
setTimeout(scroller0);
  });
})(
jQuery);
?>
Онлайн: 1
Реклама