tass-ui
Version:
A high quality UI Toolkit built on Vue.js3+.
48 lines (47 loc) • 1.59 kB
JavaScript
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
};