UNPKG

vh-plugin

Version:
62 lines (58 loc) 3.8 kB
/** * @description: 显示loading遮罩层 * @param {number} opacity - 遮罩层透明度,默认值为0.6,取值范围为0到1之间的小数。 * @param {string} color - loading颜色,默认值为#000000,可以是任何有效的CSS颜色值。 * @return {void} */ // #616dd7 const _loadingInit = (status: boolean, opacity: number = 0.6, color: string = "#000000"): void => { // 形 const styleTagsWithvhLoading = Array.from(document.querySelectorAll("style")).filter((i: any) => i.textContent.includes("ξvh-loading")); // 无形则有形 if (styleTagsWithvhLoading.length < 1) { // eslint-disable-next-line prettier/prettier const vhLoadingStyle = `body>.ξvh-loading{position:fixed;left:0;top:0;box-sizing:border-box;width:100vw;height:100vh;display:flex;align-items:center;justify-content:center;transition:all .166s;z-index:-99;pointer-events:none;opacity:0;overflow:hidden}body>.ξvh-loading.ξvh-loading-active{z-index:6666666666666666;pointer-events:auto;opacity:1}body>.ξvh-loading.ξvh-loading-active>.ξvh-loading-span-1,body>.ξvh-loading.ξvh-loading-active>.ξvh-loading-span-2,body>.ξvh-loading.ξvh-loading-active>.ξvh-loading-span-3{position:relative;width:5px;height:5px;margin:3px;border-radius:5px}body>.ξvh-loading.ξvh-loading-active>.ξvh-loading-span-1{-webkit-animation:scale .8s ease infinite;animation:vh_loading_animation .8s ease infinite}body>.ξvh-loading.ξvh-loading-active>.ξvh-loading-span-2{-webkit-animation:scale .8s ease .2s infinite;animation:vh_loading_animation .8s ease .2s infinite}body>.ξvh-loading.ξvh-loading-active>.ξvh-loading-span-3{-webkit-animation:scale .8s ease .4s infinite;animation:vh_loading_animation .8s ease .4s infinite}@-webkit-keyframes vh_loading_animation{50%{height:25px}0%{height:5px}}@keyframes vh_loading_animation{50%{height:25px}0%{height:5px}}`; const styleTag = document.querySelector("style") || document.createElement("style"); styleTag.appendChild(document.createTextNode(vhLoadingStyle)); document.head.appendChild(styleTag); } // 无则有 let vhLoadingFillDom: any = document.querySelector(".ξvh-loading"); let vhLoadingDom_1: any = document.querySelector(".ξvh-loading-span-1"); let vhLoadingDom_2: any = document.querySelector(".ξvh-loading-span-2"); let vhLoadingDom_3: any = document.querySelector(".ξvh-loading-span-3"); if (!vhLoadingFillDom) { vhLoadingFillDom = document.createElement("section"); vhLoadingFillDom.classList.add("ξvh-loading"); vhLoadingDom_1 = document.createElement("span"); vhLoadingDom_2 = document.createElement("span"); vhLoadingDom_3 = document.createElement("span"); [vhLoadingDom_1, vhLoadingDom_2, vhLoadingDom_3].forEach((i: any, idx: number) => { i.classList.add(`ξvh-loading-span-${idx + 1}`); vhLoadingFillDom.appendChild(i); }); document.body.appendChild(vhLoadingFillDom); } // 显 vhLoadingFillDom.style.background = `rgba(255,255,255,${opacity})`; [vhLoadingDom_1, vhLoadingDom_2, vhLoadingDom_3].forEach((i: any) => (i.style.background = color)); // 存在即替换 终有无 status ? vhLoadingFillDom.classList.add("ξvh-loading-active") : vhLoadingFillDom.classList.remove("ξvh-loading-active"); }; /** * @description: 显示loading遮罩层 * @param {number} opacity - 遮罩层透明度,默认值为0.6,取值范围为0到1之间的小数。 * @param {string} color - loading颜色,默认值为#000000,可以是任何有效的CSS颜色值。 * @return {void} */ const showLoading = (color?: string, opacity?: number): void => { _loadingInit(true, opacity, color); }; /** * @description: 隐藏loading遮罩层 * @return {void} */ const hideLoading = (): void => { _loadingInit(false); }; export { showLoading, hideLoading };