From c94fb32c7a3c28b18a27460aa2447eeec1fac1de Mon Sep 17 00:00:00 2001 From: Pascal Szewczyk Date: Mon, 18 Jul 2016 23:23:54 +0200 Subject: uikit added --- js/core/smooth-scroll.js | 62 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100755 js/core/smooth-scroll.js (limited to 'js/core/smooth-scroll.js') diff --git a/js/core/smooth-scroll.js b/js/core/smooth-scroll.js new file mode 100755 index 0000000..789e426 --- /dev/null +++ b/js/core/smooth-scroll.js @@ -0,0 +1,62 @@ +/*! UIkit 2.26.4 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ +(function(UI) { + + "use strict"; + + UI.component('smoothScroll', { + + boot: function() { + + // init code + UI.$html.on("click.smooth-scroll.uikit", "[data-uk-smooth-scroll]", function(e) { + var ele = UI.$(this); + + if (!ele.data("smoothScroll")) { + var obj = UI.smoothScroll(ele, UI.Utils.options(ele.attr("data-uk-smooth-scroll"))); + ele.trigger("click"); + } + + return false; + }); + }, + + init: function() { + + var $this = this; + + this.on("click", function(e) { + e.preventDefault(); + scrollToElement(UI.$(this.hash).length ? UI.$(this.hash) : UI.$("body"), $this.options); + }); + } + }); + + function scrollToElement(ele, options) { + + options = UI.$.extend({ + duration: 1000, + transition: 'easeOutExpo', + offset: 0, + complete: function(){} + }, options); + + // get / set parameters + var target = ele.offset().top - options.offset, + docheight = UI.$doc.height(), + winheight = window.innerHeight; + + if ((target + winheight) > docheight) { + target = docheight - winheight; + } + + // animate to target, fire callback when done + UI.$("html,body").stop().animate({scrollTop: target}, options.duration, options.transition).promise().done(options.complete); + } + + UI.Utils.scrollToElement = scrollToElement; + + if (!UI.$.easing.easeOutExpo) { + UI.$.easing.easeOutExpo = function(x, t, b, c, d) { return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b; }; + } + +})(UIkit); -- cgit v1.2.3