Skip to content

Instantly share code, notes, and snippets.

@imbdb
Created October 24, 2017 14:53
Show Gist options
  • Save imbdb/fc489b1152e0b0e89d7f3201c42636c4 to your computer and use it in GitHub Desktop.
Save imbdb/fc489b1152e0b0e89d7f3201c42636c4 to your computer and use it in GitHub Desktop.
Just minified version of Bootstrap 2.3.2 Affix plugin
!function ($) {"use strict";var Affix = function (element, options) {this.options = $.extend({}, $.fn.affix.defaults, options);this.$window = $(window).on('scroll.affix.data-api', $.proxy(this.checkPosition, this)).on('click.affix.data-api', $.proxy(function () { setTimeout($.proxy(this.checkPosition, this), 1) }, this));this.$element = $(element);this.checkPosition();};Affix.prototype.checkPosition = function () {if (!this.$element.is(':visible')) return;var scrollHeight = $(document).height(), scrollTop = this.$window.scrollTop(), position = this.$element.offset(), offset = this.options.offset, offsetBottom = offset.bottom, offsetTop = offset.top, reset = 'affix affix-top affix-bottom', affix;if (typeof offset != 'object') offsetBottom = offsetTop = offset;if (typeof offsetTop == 'function') offsetTop = offset.top();if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(); affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ?false : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' : offsetTop != null && scrollTop <= offsetTop ? 'top' : false;if (this.affixed === affix) return;this.affixed = affix;this.unpin = affix == 'bottom' ? position.top - scrollTop : null;this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : ''))} ;var old = $.fn.affix; $.fn.affix = function (option) {return this.each(function () {var $this = $(this), data = $this.data('affix'), options = typeof option == 'object' && option;if (!data) $this.data('affix', (data = new Affix(this, options)));if (typeof option == 'string') data[option]();});};$.fn.affix.Constructor = Affix;$.fn.affix.defaults = {offset: 0}; $.fn.affix.noConflict = function () {$.fn.affix = old;return this;};$(window).on('load', function () {$('[data-spy="affix"]').each(function () {var $spy = $(this), data = $spy.data();data.offset = data.offset || {};data.offsetBottom && (data.offset.bottom = data.offsetBottom) ;data.offsetTop && (data.offset.top = data.offsetTop) ;$spy.affix(data) ;})})}(window.jQuery);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment