aboutsummaryrefslogtreecommitdiffstats
path: root/uikit/static/js/core/smooth-scroll.js
diff options
context:
space:
mode:
authorValentin Heinz <inktrap@users.noreply.github.com>2017-04-08 14:03:25 +0200
committerAlexis Metaireau <alexis@notmyidea.org>2017-04-08 14:03:25 +0200
commit5c231ceade17e7f5b1bba90e845dd2d17e54da1c (patch)
treef4f07dbbac2c51c8a0af1e1a24f11e030a2e4155 /uikit/static/js/core/smooth-scroll.js
parent00986ab80df4b6be2d1306671907e2b2378e487f (diff)
downloadpelican-themes-5c231ceade17e7f5b1bba90e845dd2d17e54da1c.tar.gz
uikit demo theme ported to pelican (#385)
Diffstat (limited to 'uikit/static/js/core/smooth-scroll.js')
-rw-r--r--uikit/static/js/core/smooth-scroll.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/uikit/static/js/core/smooth-scroll.js b/uikit/static/js/core/smooth-scroll.js
new file mode 100644
index 0000000..a7ebce0
--- /dev/null
+++ b/uikit/static/js/core/smooth-scroll.js
@@ -0,0 +1,62 @@
+/*! UIkit 2.21.0 | 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);