PHP Classes

File: htdocs/themes/xbootstrap/js/headhesive.js

Recommend this page to a friend!
  Classes of Michael Beck   Xoops 2.5   htdocs/themes/xbootstrap/js/headhesive.js   Download  
File: htdocs/themes/xbootstrap/js/headhesive.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: Xoops 2.5
Modular content management publication system
Author: By
Last change:
Date: 7 years ago
Size: 3,328 bytes
 

Contents

Class file image Download
/*! * headhesive v1.1.1 - An on-demand sticky header * Url: http://markgoodyear.com/labs/headhesive * Copyright (c) Mark Goodyear ? @markgdyr ? http://markgoodyear.com * License: MIT */ !function (t, s, e) { "use strict"; function i(t) { for (var s = 0; t;)s += t.offsetTop, t = t.offsetParent; return s } var o = function (t, s) { for (var e in s)s.hasOwnProperty(e) && (t[e] = "object" == typeof s[e] ? o(t[e], s[e]) : s[e]); return t }, n = function (t, s) { var e, i, o, n = Date.now || function () { return (new Date).getTime() }, l = null, c = 0, h = function () { c = n(), l = null, o = t.apply(e, i), e = i = null }; return function () { var r = n(), f = s - (r - c); return e = this, i = arguments, 0 >= f ? (clearTimeout(l), l = null, c = r, o = t.apply(e, i), e = i = null) : l || (l = setTimeout(h, f)), o } }, l = function () { return t.pageYOffset !== e ? t.pageYOffset : (s.documentElement || s.body.parentNode || s.body).scrollTop }, c = function (e, i) { "querySelector" in s && "addEventListener" in t && (this.visible = !1, this.options = { offset: 300, classes: {clone: "headhesive", stick: "headhesive--stick", unstick: "headhesive--unstick"}, throttle: 250, onInit: function () { }, onStick: function () { }, onUnstick: function () { }, onDestroy: function () { } }, this.elem = "string" == typeof e ? s.querySelector(e) : e, this.options = o(this.options, i), this.init()) }; c.prototype = { constructor: c, init: function () { if (this.clonedElem = this.elem.cloneNode(!0), this.clonedElem.className += " " + this.options.classes.clone, s.body.insertBefore(this.clonedElem, s.body.firstChild), "number" == typeof this.options.offset) this.scrollOffset = this.options.offset; else { if ("string" != typeof this.options.offset)throw new Error("Invalid offset: " + this.options.offset); this.scrollOffset = i(s.querySelector(this.options.offset)) } this._throttleUpdate = n(this.update.bind(this), this.options.throttle), t.addEventListener("scroll", this._throttleUpdate, !1), this.options.onInit.call(this) }, destroy: function () { s.body.removeChild(this.clonedElem), t.removeEventListener("scroll", this._throttleUpdate), this.options.onDestroy.call(this) }, stick: function () { this.visible || (this.clonedElem.className = this.clonedElem.className.replace(new RegExp("(^|\\s)*" + this.options.classes.unstick + "(\\s|$)*", "g"), ""), this.clonedElem.className += " " + this.options.classes.stick, this.visible = !0, this.options.onStick.call(this)) }, unstick: function () { this.visible && (this.clonedElem.className = this.clonedElem.className.replace(new RegExp("(^|\\s)*" + this.options.classes.stick + "(\\s|$)*", "g"), ""), this.clonedElem.className += " " + this.options.classes.unstick, this.visible = !1, this.options.onUnstick.call(this)) }, update: function () { l() > this.scrollOffset ? this.stick() : this.unstick() } }, t.Headhesive = c }(window, document);