This repository has been archived on 2024-09-04. You can view files and clone it, but cannot push or open issues or pull requests.
arimelody.me-static/public/script/main.js

68 lines
1.8 KiB
JavaScript

const header_links = document.getElementById("header-links");
const hamburger = document.getElementById("header-links-toggle");
function type_out(e) {
const text = e.innerText;
const original = e.innerHTML;
const delay = 25;
let chars = 0;
let html = "";
function insert_char(character, parent) {
if (chars == 0) parent.innerHTML = "";
const c = document.createElement("span");
c.innerText = character;
parent.appendChild(c);
c.classList.add("newchar");
}
function normalize() {
e.innerHTML = original;
}
function increment_char() {
const newchar = text.substring(chars, chars + 1);
insert_char(newchar, e);
chars++;
if (chars <= text.length) {
setTimeout(increment_char, delay);
} else {
setTimeout(normalize, 250);
}
}
increment_char();
}
function fill_list(list) {
const items = list.querySelectorAll("li a, li span");
items.innerText = "";
const delay = 100;
items.forEach((item, iter) => {
item.style.animationDelay = `${iter * delay}ms`;
item.style.animationPlayState = "playing";
});
}
[...document.querySelectorAll("h1, h2, h3, h4, h5, h6")]
.filter((e) => e.innerText != "")
.forEach((e) => {
type_out(e);
});
[...document.querySelectorAll("ol, ul")]
.filter((e) => e.innerText != "")
.forEach((e) => {
fill_list(e);
});
function toggle_header_links() {
header_links.classList.toggle("open");
}
document.addEventListener("click", event => {
if (!header_links.contains(event.target) && !hamburger.contains(event.target)) {
header_links.classList.remove("open");
}
});