You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.9 KiB
70 lines
1.9 KiB
/*! |
|
Waypoints Sticky Element Shortcut - 4.0.1 |
|
Copyright © 2011-2016 Caleb Troughton |
|
Licensed under the MIT license. |
|
https://github.com/imakewebthings/waypoints/blob/master/licenses.txt |
|
*/ |
|
(function() { |
|
'use strict' |
|
|
|
var $ = window.jQuery |
|
var Waypoint = window.Waypoint |
|
|
|
/* http://imakewebthings.com/waypoints/shortcuts/sticky-elements */ |
|
function Sticky(options) { |
|
this.options = $.extend({}, Waypoint.defaults, Sticky.defaults, options) |
|
this.element = this.options.element |
|
this.$element = $(this.element) |
|
this.createWrapper() |
|
this.createWaypoint() |
|
} |
|
|
|
/* Private */ |
|
Sticky.prototype.createWaypoint = function() { |
|
var originalHandler = this.options.handler |
|
|
|
this.waypoint = new Waypoint($.extend({}, this.options, { |
|
element: this.wrapper, |
|
handler: $.proxy(function(direction) { |
|
var shouldBeStuck = this.options.direction.indexOf(direction) > -1 |
|
var wrapperHeight = shouldBeStuck ? this.$element.outerHeight(true) : '' |
|
|
|
this.$wrapper.height(wrapperHeight) |
|
this.$element.toggleClass(this.options.stuckClass, shouldBeStuck) |
|
|
|
if (originalHandler) { |
|
originalHandler.call(this, direction) |
|
} |
|
}, this) |
|
})) |
|
} |
|
|
|
/* Private */ |
|
Sticky.prototype.createWrapper = function() { |
|
if (this.options.wrapper) { |
|
this.$element.wrap(this.options.wrapper) |
|
} |
|
this.$wrapper = this.$element.parent() |
|
this.wrapper = this.$wrapper[0] |
|
} |
|
|
|
/* Public */ |
|
Sticky.prototype.destroy = function() { |
|
if (this.$element.parent()[0] === this.wrapper) { |
|
this.waypoint.destroy() |
|
this.$element.removeClass(this.options.stuckClass) |
|
if (this.options.wrapper) { |
|
this.$element.unwrap() |
|
} |
|
} |
|
} |
|
|
|
Sticky.defaults = { |
|
wrapper: '<div class="sticky-wrapper" />', |
|
stuckClass: 'stuck', |
|
direction: 'down right' |
|
} |
|
|
|
Waypoint.Sticky = Sticky |
|
}()) |
|
; |