mirror of
https://github.com/bigchaindb/site.git
synced 2024-11-29 23:28:03 +01:00
59 lines
2.0 KiB
JavaScript
59 lines
2.0 KiB
JavaScript
//
|
|
// https://github.com/bendc/anchor-scroll/blob/master/scroll.min.js
|
|
//
|
|
|
|
document.addEventListener("DOMContentLoaded", function() {
|
|
var e = function() {
|
|
if ("scrollingElement" in document) return document.scrollingElement;
|
|
var a = document.documentElement,
|
|
b = a.scrollTop;
|
|
a.scrollTop = b + 1;
|
|
var c = a.scrollTop;
|
|
a.scrollTop = b;
|
|
return c > b ? a : document.body
|
|
}(),
|
|
g = function(a) {
|
|
var b = e.scrollTop;
|
|
if (2 > a.length) a = -b;
|
|
else if (a = document.querySelector(a)) {
|
|
a = a.getBoundingClientRect().top;
|
|
var c = e.scrollHeight - window.innerHeight;
|
|
a = b + a < c ? a : c - b
|
|
} else a = void 0;
|
|
if (a) return new Map([
|
|
["start", b],
|
|
["delta", a]
|
|
])
|
|
},
|
|
h = function(a) {
|
|
var b =
|
|
a.getAttribute("href"),
|
|
c = g(b);
|
|
if (c) {
|
|
var d = new Map([
|
|
["duration", 800]
|
|
]),
|
|
k = performance.now();
|
|
requestAnimationFrame(function l(a) {
|
|
d.set("elapsed", a - k);
|
|
a = d.get("duration");
|
|
var f = d.get("elapsed"),
|
|
g = c.get("start"),
|
|
h = c.get("delta");
|
|
e.scrollTop = Math.round(h * (-Math.pow(2, -10 * f / a) + 1) + g);
|
|
d.get("elapsed") < d.get("duration") ? requestAnimationFrame(l) : (history.pushState(null, null, b), e.scrollTop = c.get("start") + c.get("delta"))
|
|
})
|
|
}
|
|
},
|
|
f = document.querySelectorAll("a.scroll");
|
|
(function b(c, d) {
|
|
var e = c.item(d);
|
|
e.addEventListener("click",
|
|
function(b) {
|
|
b.preventDefault();
|
|
h(e)
|
|
});
|
|
if (d) return b(c, d - 1)
|
|
})(f, f.length - 1)
|
|
});
|