navigation client side js with helper functions
This commit is contained in:
parent
ca8ba91bde
commit
9491eb0586
1 changed files with 84 additions and 0 deletions
84
web/public/js/mono.js
Normal file
84
web/public/js/mono.js
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
elbyid = (id) => document.getElementById(id);
|
||||||
|
clamp = (num, min, max) => Math.min(Math.max(num, min), max);
|
||||||
|
clamp01 = (num) => clamp(num, 0, 1);
|
||||||
|
sign = (num) => (num === 0 ? 0 : num > 0 ? 1 : -1);
|
||||||
|
within = (num, min, max) => num >= min && num <= max;
|
||||||
|
lerp = (a, b, t) => a + t * (b - a);
|
||||||
|
|
||||||
|
document.addEventListener("DOMContentLoaded", () => {
|
||||||
|
let side_open = localStorage.getItem("side_open") ? true : false;
|
||||||
|
|
||||||
|
const nav_el = elbyid("nav");
|
||||||
|
const nav_border_el = elbyid("nav_border");
|
||||||
|
const nav_side_el = elbyid("nav_side");
|
||||||
|
const side_el = elbyid("side");
|
||||||
|
const side_border_el = elbyid("side_border");
|
||||||
|
const main_el = elbyid("main");
|
||||||
|
const top_img_el = elbyid("top_img");
|
||||||
|
|
||||||
|
nav_fade = () => {
|
||||||
|
if (window.scrollY == 0) {
|
||||||
|
if (!side_open) {
|
||||||
|
side_el.style.backgroundColor = side_border_el.style.backgroundColor =
|
||||||
|
"#80808000";
|
||||||
|
} else {
|
||||||
|
side_el.style.backgroundColor = "#808080FF";
|
||||||
|
side_border_el.style.backgroundColor = "#777777FF";
|
||||||
|
}
|
||||||
|
|
||||||
|
nav_el.style.backgroundColor = nav_border_el.style.backgroundColor =
|
||||||
|
"#80808000";
|
||||||
|
} else {
|
||||||
|
nav_el.style.backgroundColor = side_el.style.backgroundColor =
|
||||||
|
"#808080FF";
|
||||||
|
nav_border_el.style.backgroundColor =
|
||||||
|
side_border_el.style.backgroundColor = "#777777FF";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
nav_fade();
|
||||||
|
nav_el.style.transition =
|
||||||
|
nav_border_el.style.transition =
|
||||||
|
side_el.style.transition =
|
||||||
|
side_border_el.style.transition =
|
||||||
|
"background-color 0.166s";
|
||||||
|
|
||||||
|
window.addEventListener("scroll", (event) => {
|
||||||
|
nav_fade();
|
||||||
|
});
|
||||||
|
|
||||||
|
open_side = () => {
|
||||||
|
side_open = true;
|
||||||
|
localStorage.setItem("side_open", "open");
|
||||||
|
|
||||||
|
nav_side_el.style.width = "240px";
|
||||||
|
side_el.style.width = "240px";
|
||||||
|
side_el.classList.add("open");
|
||||||
|
side_border_el.style.left = "240px";
|
||||||
|
main_el.style.paddingLeft = "240px";
|
||||||
|
};
|
||||||
|
close_side = () => {
|
||||||
|
side_open = false;
|
||||||
|
localStorage.removeItem("side_open");
|
||||||
|
|
||||||
|
nav_side_el.style.width = "auto";
|
||||||
|
side_el.style.width = "64px";
|
||||||
|
side_el.classList.remove("open");
|
||||||
|
side_border_el.style.left = "64px";
|
||||||
|
main_el.style.paddingLeft = "64px";
|
||||||
|
};
|
||||||
|
update_side = () => {
|
||||||
|
if (side_open) {
|
||||||
|
open_side();
|
||||||
|
} else {
|
||||||
|
close_side();
|
||||||
|
}
|
||||||
|
nav_fade();
|
||||||
|
};
|
||||||
|
update_side();
|
||||||
|
toggle_side = () => {
|
||||||
|
side_open = !side_open;
|
||||||
|
update_side();
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
window.addEventListener("load", () => {});
|
Loading…
Add table
Reference in a new issue