UNPKG

vuux

Version:

Vue3 Nuxt3 Nuxt4 组件库

28 lines (27 loc) 783 B
import { ref as u, onMounted as m, onUnmounted as w } from "vue"; const T = (l) => { const n = u(!1), t = () => document.documentElement.scrollTop || document.body.scrollTop, e = () => { n.value = t() >= l.height; }, c = (o) => o < 0.5 ? 2 * o * o : -1 + (4 - 2 * o) * o, i = () => { const o = Date.now(), a = t(), s = () => { const r = (Date.now() - o) / 500; if (r < 1) { const d = a * (1 - c(r)); window.scrollTo(0, d), requestAnimationFrame(s); } else window.scrollTo(0, 0); }; requestAnimationFrame(s); }; return m(() => { window.addEventListener("scroll", e), e(); }), w(() => { window.removeEventListener("scroll", e); }), { visible: n, handleClick: i }; }; export { T as useBackTop };