various-ui
Version:
This is a test version of the Vue 3 component library
51 lines (48 loc) • 1.45 kB
JavaScript
import { ref, computed } from 'vue';
import '../../../../utils/index.mjs';
import { isNumber } from 'lodash-es';
const useComposable = (define) => {
const refs = {
offset: ref(0),
frame: ref(),
main: ref(),
content: ref(),
container: ref()
};
const methods = {
//* 绘制动画
animation: () => {
if (!refs.container.value || !refs.content.value || !refs.main.value) return;
if (refs.offset.value >= refs.content.value.offsetWidth) {
refs.offset.value = 0;
} else {
refs.offset.value += define.delay;
}
refs.container.value.style.transform = `translateX(-${refs.offset.value}px)`;
refs.frame.value = window.requestAnimationFrame(methods.animation);
},
//* 鼠标移入事件
mouseenter: () => {
refs.frame.value && window.cancelAnimationFrame(refs.frame.value);
},
//* 鼠标移出事件
mouseleave: () => {
if (!refs.container.value || !refs.content.value || !refs.main.value) return;
else {
refs.frame.value = window.requestAnimationFrame(methods.animation);
}
}
};
const computeds = {
//* 标签样式
style: computed(() => {
if (isNumber(define.height)) return { height: define.height + "px" };
else {
return { height: define.height };
}
})
};
return { refs, methods, computeds };
};
export { useComposable };
//# sourceMappingURL=composable.mjs.map