diff options
Diffstat (limited to '_includes/scripts/lib/affix.js')
-rw-r--r-- | _includes/scripts/lib/affix.js | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/_includes/scripts/lib/affix.js b/_includes/scripts/lib/affix.js deleted file mode 100644 index 779442f..0000000 --- a/_includes/scripts/lib/affix.js +++ /dev/null @@ -1,111 +0,0 @@ -(function() { - var SOURCES = window.TEXT_VARIABLES.sources; - window.Lazyload.js(SOURCES.jquery, function() { - function affix(options) { - var $root = this, $window = $(window), $scrollTarget, $scroll, - offsetBottom = 0, scrollTarget = window, scroll = window.document, disabled = false, isOverallScroller = true, - rootTop, rootLeft, rootHeight, scrollBottom, rootBottomTop, - hasInit = false, curState; - - function setOptions(options) { - var _options = options || {}; - _options.offsetBottom && (offsetBottom = _options.offsetBottom); - _options.scrollTarget && (scrollTarget = _options.scrollTarget); - _options.scroll && (scroll = _options.scroll); - _options.disabled !== undefined && (disabled = _options.disabled); - $scrollTarget = $(scrollTarget); - isOverallScroller = window.isOverallScroller($scrollTarget[0]); - $scroll = $(scroll); - } - function preCalc() { - top(); - rootHeight = $root.outerHeight(); - rootTop = $root.offset().top + (isOverallScroller ? 0 : $scrollTarget.scrollTop()); - rootLeft = $root.offset().left; - } - function calc(needPreCalc) { - needPreCalc && preCalc(); - scrollBottom = $scroll.outerHeight() - offsetBottom - rootHeight; - rootBottomTop = scrollBottom - rootTop; - } - function top() { - if (curState !== 'top') { - $root.removeClass('fixed').css({ - left: 0, - top: 0 - }); - curState = 'top'; - } - } - function fixed() { - if (curState !== 'fixed') { - $root.addClass('fixed').css({ - left: rootLeft + 'px', - top: 0 - }); - curState = 'fixed'; - } - } - function bottom() { - if (curState !== 'bottom') { - $root.removeClass('fixed').css({ - left: 0, - top: rootBottomTop + 'px' - }); - curState = 'bottom'; - } - } - function setState() { - var scrollTop = $scrollTarget.scrollTop(); - if (scrollTop >= rootTop && scrollTop <= scrollBottom) { - fixed(); - } else if (scrollTop < rootTop) { - top(); - } else { - bottom(); - } - } - function init() { - if(!hasInit) { - var interval, timeout; - calc(true); setState(); - // run calc every 100 millisecond - interval = setInterval(function() { - calc(); - }, 100); - timeout = setTimeout(function() { - clearInterval(interval); - }, 45000); - window.pageLoad.then(function() { - setTimeout(function() { - clearInterval(interval); - clearTimeout(timeout); - }, 3000); - }); - $scrollTarget.on('scroll', function() { - disabled || setState(); - }); - $window.on('resize', function() { - disabled || (calc(true), setState()); - }); - hasInit = true; - } - } - - setOptions(options); - if (!disabled) { - init(); - } - $window.on('resize', window.throttle(function() { - init(); - }, 200)); - return { - setOptions: setOptions, - refresh: function() { - calc(true, { animation: false }); setState(); - } - }; - } - $.fn.affix = affix; - }); -})(); |