-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.js
99 lines (74 loc) · 2.14 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
"use strict";
var isResized = false;
function resizeBox() {
$("#box").toggleClass("show-full-box");
if (isResized === false) {
setTimeout(function () {
$("#box").css("overflow", "visible");
}, 500);
isResized = true;
$("#show-more-btn").html("Prikaži manje");
} else {
$("#box").css("overflow", "hidden");
isResized = false;
$("#show-more-btn").html("Prikaži više");
$("#more-projects-section")[0].scrollIntoView();
}
}
const modal = $("#resumeModal");
$("#open_resume_btn").click(() => {
modal.css("display", "block");
});
$(".close").click(() => {
modal.css("display", "none");
});
$(window).click((event) => {
if (event.target == modal[0]) {
modal.css("display", "none");
}
});
$("#cancelModal").click(() => {
modal.css("display", "none");
});
$("#openResume").click(() => {
const selectedLanguage = $('input[name="language"]:checked').val();
const selectedTheme = $('input[name="theme"]:checked').val();
window.open(`./assets/resumes/CV-Antonio_Sertić-${selectedLanguage}_${selectedTheme}.pdf`, "_blank");
modal.css("display", "none");
});
// Lazy loading images
const imgTargets = $("img[data-src]");
const loadImg = function (entries, observer) {
entries.forEach((entry) => {
if (!entry.isIntersecting) return;
const $img = $(entry.target);
$img.attr("src", $img.attr("data-src"));
$img.on("load", function () {
$img.removeClass("lazy-img");
});
observer.unobserve(entry.target);
});
};
const imgObserver = new IntersectionObserver(loadImg, {
root: null,
threshold: 0,
});
imgTargets.each(function () {
imgObserver.observe(this);
});
// Reveal sections
const allSections = document.querySelectorAll(".section");
const revealSection = function (entries, observer) {
const [entry] = entries;
if (!entry.isIntersecting) return;
entry.target.classList.remove("section--hidden");
observer.unobserve(entry.target);
};
const sectionObserver = new IntersectionObserver(revealSection, {
root: null,
threshold: 0.15,
});
allSections.forEach(function (section) {
sectionObserver.observe(section);
section.classList.add("section--hidden");
});