ve_main_hugosource/themes/hugo-scroll_copy/assets/js/index.js
2023-11-18 23:47:26 +01:00

118 lines
3.3 KiB
JavaScript

/**
* Main JS file for GhostScroll behaviours
*/
var $post = $(".post");
var $first = $(".post.first");
var $last = $(".post.last");
var $fnav = $(".fixed-nav");
var $postholder = $(".post-holder");
var $sitehead = $("#site-head");
/* Globals jQuery, document */
(function ($) {
"use strict";
function srcTo(el, dur = 1000) {
$("html, body").animate(
{
scrollTop: el.offset().top,
},
dur,
function() {
window.location.hash = el.attr("id");
}
);
}
function srcToAnchorWithTitle(str) {
var $el = $("#" + str);
if ($el.length) {
srcTo($el);
}
}
$(document).ready(function () {
// fallback to jQuery animate if smooth scrolling is not supported
if (!"scrollBehavior" in document.documentElement.style) {
// Cover buttons
$("a.btn.site-menu").click(function (e) {
e.preventDefault();
srcToAnchorWithTitle($(e.target).data("title-anchor"));
});
// cover arrow button
$("#header-arrow").click(function (e) {
e.preventDefault()
srcTo($first);
});
}
$(".post.last").next(".post-after").hide();
if ($sitehead.length) {
$(window).scroll(function () {
var w = $(window).scrollTop();
var g = $sitehead.offset().top;
var h = $sitehead.offset().top + $sitehead.height() - 100;
if (w >= Math.floor(g) && w <= Math.ceil(h)) {
$(".fixed-nav").fadeOut("fast");
} else {
$(".fixed-nav").css("display", "flex").fadeIn("fast");
}
$post.each(function () {
if (($(window).height() + w) > ($(document).height() - $(".site-footer").height())) {
var l = $postholder.length;
$(".fn-item").removeClass("active")
$(".fn-item[item_index='" + (l) + "']").addClass("active")
} else {
var f = $(this).offset().top;
var b = $(this).offset().top + $(this).height();
var t = $(this).parent(".post-holder").index();
var i = $(".fn-item[item_index='" + t + "']");
var a = $(this)
.parent(".post-holder")
.prev(".post-holder")
.find(".post-after");
$(this).attr("item_index", t);
if (w >= f && w <= b) {
i.addClass("active");
a.fadeOut("slow");
} else {
i.removeClass("active");
a.fadeIn("slow");
}
}
});
});
}
$('ul').addClass("fa-ul");
$("ul li").prepend('<span class="fa-li"><i class="fa fa-asterisk"></i></span>');
$("blockquote p").prepend('<span class="quo fa fa-quote-left"></span>');
$("blockquote p").append('<span class="quo fa fa-quote-right"></span>');
});
$post.each(function () {
var postText = $(this).html();
var fa = [];
for (var i = 0; i < icons.length; i++) {
fa[i] = {};
fa[i].str = "@" + icons[i] + "@";
fa[i].icon = icons[i];
fa[i].int = postText.search(fa[i].str);
if (fa[i].int > -1) {
fa[i].count = postText.match(new RegExp(fa[i].str, "g")).length;
for (var j = 0; j < fa[i].count; j++) {
$(this).html(
$(this)
.html()
.replace(fa[i].str, "<i class='fa " + fa[i].icon + "'></i>")
);
}
}
}
});
})(jQuery);