UNPKG

tass-ui

Version:

A high quality UI Toolkit built on Vue.js3+.

48 lines (47 loc) 1.59 kB
import { defineComponent, ref, onMounted, resolveComponent, withDirectives, openBlock, createElementBlock, createVNode, vShow } from "vue"; import "../../../theme-chalk/src/backtop.scss.mjs"; const _sfc_main = /* @__PURE__ */ defineComponent({ __name: "backtop", setup(__props) { const btnShow = ref(true); onMounted(() => { window.addEventListener("scroll", scrollToTop); window.addEventListener("beforeunload", (e) => { window.scroll(0, 0); }); }); let timer = null; function backTop() { timer = setInterval(function() { let backTop2 = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; let speedTop = backTop2 / 10; document.documentElement.scrollTop = backTop2 - speedTop; if (Math.abs(backTop2) < 1) { clearInterval(timer); } }, 10); } function scrollToTop() { let pageLookHeight = document.documentElement.clientHeight || document.body.clientHeight; let scroll = document.documentElement.scrollTop; btnShow.value = scroll >= pageLookHeight * 0.01; } return (_ctx, _cache) => { const _component_tass_icon = resolveComponent("tass-icon"); return withDirectives((openBlock(), createElementBlock("div", { class: "tas-backtop", onClick: backTop }, [ createVNode(_component_tass_icon, { name: "rocket", class: "tas-backtop-icon" }) ], 512)), [ [vShow, btnShow.value] ]); }; } }); export { _sfc_main as default };