2020-04-22 22:33:29 +02:00

93 lines
2.9 KiB
JavaScript

document.addEventListener('DOMContentLoaded', function () {
var elems = document.querySelectorAll('.parallax');
var parallaxes = M.Parallax.init(elems, {});
var elems = document.querySelectorAll('.slider');
var sliders = M.Slider.init(elems, {
indicators: true,
duration: 500,
interval: 5000
});
var elems = document.querySelectorAll('.sidenav');
var sidenav = M.Sidenav.init(elems, {});
var mailcypts = document.querySelectorAll(".cryptmail");
for (var i = 0; i < mailcypts.length; i++) {
mailcypts[i].onclick = function () {
window.location.href = 'mailto:' + this.dataset.name + '@' + this.dataset.domain + '.' + this.dataset.tld;
return false;
}
}
var hashAnchors = document.querySelectorAll("a[href^='#']:not([href='#'])");
for (var i = 0; i < hashAnchors.length; i++) {
hashAnchors[i].onclick = function () {
var target = this.getAttribute("href");
scrollToElement(target);
return false;
}
}
});
const navbarScrollOffset = -48;
// native smooth scrolling for Chrome, Firefox & Opera
// @see: https://caniuse.com/#feat=css-scroll-behavior
const nativeSmoothScrollTo = function (elem) {
window.scroll({
behavior: 'smooth',
left: 0,
top: elem.getBoundingClientRect().top + window.pageYOffset + navbarScrollOffset
});
};
// polyfilled smooth scrolling for IE, Edge & Safari
const smoothScrollTo = function (to, duration) {
const element = document.scrollingElement || document.documentElement,
start = element.scrollTop,
change = to - start,
startDate = +new Date();
// t = current time
// b = start value
// c = change in value
// d = duration
const easeInOutQuad = function (t, b, c, d) {
t /= d / 2;
if (t < 1) return c / 2 * t * t + b;
t--;
return -c / 2 * (t * (t - 2) - 1) + b;
};
const animateScroll = function () {
const currentDate = +new Date();
const currentTime = currentDate - startDate;
element.scrollTop = parseInt(easeInOutQuad(currentTime, start, change, duration));
if (currentTime < duration) {
requestAnimationFrame(animateScroll);
} else {
element.scrollTop = to;
}
};
animateScroll();
};
// detect support for the behavior property in ScrollOptions
const supportsNativeSmoothScroll = 'scrollBehavior' in document.documentElement.style;
// smooth scrolling stub
const scrollToElement = function (elemSelector) {
if (!elemSelector) {
return;
}
const elem = document.querySelector(elemSelector);
if (elem) {
if (supportsNativeSmoothScroll) {
nativeSmoothScrollTo(elem);
} else {
smoothScrollTo(elem.offsetTop + navbarScrollOffset, 600);
}
}
};