diff --git a/assets/customize.js b/assets/customize.js index 406b9c46..4eafc707 100644 --- a/assets/customize.js +++ b/assets/customize.js @@ -1,3 +1,37 @@ +// #region anchor + +window.addEventListener("hashchange", (event) => { + if (!location.hash) return; + event.preventDefault(); + event.stopPropagation(); + const navbar = document.querySelector(".navbar__wrapper"); + const element = document.querySelector(decodeURIComponent(location.hash)); + const rect = element.getBoundingClientRect(); + window.scrollTo({ + top: rect.top + window.scrollY - navbar.clientHeight - 24, + behavior: "smooth", + }); +}); + +document.addEventListener("DOMContentLoaded", () => { + window.dispatchEvent(new HashChangeEvent("hashchange")); +}); + +document.addEventListener( + "click", + (event) => { + const target = event.target; + if (target.tagName !== "A") return; + if (!target.classList.contains("anchor")) return; + event.preventDefault(); + event.stopPropagation(); + location.replace(target.hash); + }, + { capture: true } +); + +// #endregion + document.querySelectorAll("a[href]").forEach((link) => { if (!/^https?:$/.test(link.protocol)) return; if (link.hostname === location.hostname) return; @@ -9,22 +43,37 @@ document.querySelectorAll("a[data-email]").forEach((element) => { delete element.dataset.email; }); +// #region weixin media platform qrcode + document.addEventListener( "click", (event) => { - if (event.target.tagName !== "A") return - if (event.target.hostname !== "open.weixin.qq.com") return + if (event.target.tagName !== "A") return; + if (event.target.hostname !== "open.weixin.qq.com") return; event.preventDefault(); event.stopPropagation(); const qrcode = document.createElement("img"); qrcode.src = event.target.href; qrcode.width = 430; qrcode.height = 430; - swal(event.target.title, { content: qrcode }) + swal(event.target.title, { content: qrcode }); }, - { capture: true }, + { capture: true } ); -function showHiddenPhoto(elem) { - elem.classList.add('show'); -} +// #endregion + +// #region hidden photo + +document.addEventListener( + "click", + (event) => { + if (!event.target.classList.contains("mask")) return; + const photo = event.target.closest(".hidden-photo") + if (!photo) return + photo.classList.add("show"); + }, + { capture: true } +); + +// #endregion diff --git a/layouts/shortcodes/hiddenphoto.html b/layouts/shortcodes/hiddenphoto.html index a3f18b5f..097e81d3 100644 --- a/layouts/shortcodes/hiddenphoto.html +++ b/layouts/shortcodes/hiddenphoto.html @@ -1,4 +1,4 @@ -
+
{{ .Get 1 }}
{{ i18n "click-to-show" }}