vuux
Version:
Vue3 Nuxt3 Nuxt4 组件库
28 lines (27 loc) • 783 B
JavaScript
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
};