114 lines
3.6 KiB
JavaScript
114 lines
3.6 KiB
JavaScript
|
/**
|
||
|
* Sets up Justified Gallery.
|
||
|
*/
|
||
|
if (!!$.prototype.justifiedGallery) {
|
||
|
var options = {
|
||
|
rowHeight: 140,
|
||
|
margins: 4,
|
||
|
lastRow: "justify"
|
||
|
};
|
||
|
$(".article-gallery").justifiedGallery(options);
|
||
|
}
|
||
|
|
||
|
$(document).ready(function () {
|
||
|
|
||
|
/**
|
||
|
* Shows the responsive navigation menu on mobile.
|
||
|
*/
|
||
|
$("#header > #nav > ul > .icon").click(function () {
|
||
|
$("#header > #nav > ul").toggleClass("responsive");
|
||
|
});
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Controls the different versions of the menu in blog post articles
|
||
|
* for Desktop, tablet and mobile.
|
||
|
*/
|
||
|
if ($(".post").length) {
|
||
|
var menu = $("#menu");
|
||
|
var nav = $("#menu > #nav");
|
||
|
var menuIcon = $("#menu-icon, #menu-icon-tablet");
|
||
|
|
||
|
/**
|
||
|
* Display the menu on hi-res laptops and desktops.
|
||
|
*/
|
||
|
if ($(document).width() >= 1440) {
|
||
|
menu.css("visibility", "visible");
|
||
|
menuIcon.addClass("active");
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Display the menu if the menu icon is clicked.
|
||
|
*/
|
||
|
menuIcon.click(function () {
|
||
|
if (menu.css("visibility") === "hidden") {
|
||
|
menu.css("visibility", "visible");
|
||
|
menuIcon.addClass("active");
|
||
|
} else {
|
||
|
menu.css("visibility", "hidden");
|
||
|
menuIcon.removeClass("active");
|
||
|
}
|
||
|
return false;
|
||
|
});
|
||
|
|
||
|
/**
|
||
|
* Add a scroll listener to the menu to hide/show the navigation links.
|
||
|
*/
|
||
|
if (menu.length) {
|
||
|
$(window).on("scroll", function () {
|
||
|
var topDistance = menu.offset().top;
|
||
|
|
||
|
// hide only the navigation links on desktop
|
||
|
if (!nav.is(":visible") && topDistance < 50) {
|
||
|
nav.show();
|
||
|
} else if (nav.is(":visible") && topDistance > 100) {
|
||
|
nav.hide();
|
||
|
}
|
||
|
|
||
|
// on tablet, hide the navigation icon as well and show a "scroll to top
|
||
|
// icon" instead
|
||
|
if (!$("#menu-icon").is(":visible") && topDistance < 50) {
|
||
|
$("#menu-icon-tablet").show();
|
||
|
$("#top-icon-tablet").hide();
|
||
|
} else if (!$("#menu-icon").is(":visible") && topDistance > 100) {
|
||
|
$("#menu-icon-tablet").hide();
|
||
|
$("#top-icon-tablet").show();
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Show mobile navigation menu after scrolling upwards,
|
||
|
* hide it again after scrolling downwards.
|
||
|
*/
|
||
|
if ($("#footer-post").length) {
|
||
|
var lastScrollTop = 0;
|
||
|
$(window).on("scroll", function () {
|
||
|
var topDistance = $(window).scrollTop();
|
||
|
|
||
|
if (topDistance > lastScrollTop) {
|
||
|
// downscroll -> show menu
|
||
|
$("#footer-post").hide();
|
||
|
} else {
|
||
|
// upscroll -> hide menu
|
||
|
$("#footer-post").show();
|
||
|
}
|
||
|
lastScrollTop = topDistance;
|
||
|
|
||
|
// close all submenu"s on scroll
|
||
|
$("#nav-footer").hide();
|
||
|
$("#toc-footer").hide();
|
||
|
$("#share-footer").hide();
|
||
|
|
||
|
// show a "navigation" icon when close to the top of the page,
|
||
|
// otherwise show a "scroll to the top" icon
|
||
|
if (topDistance < 50) {
|
||
|
$("#actions-footer > #top").hide();
|
||
|
} else if (topDistance > 100) {
|
||
|
$("#actions-footer > #top").show();
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
});
|