diff --git a/frontend/components/global/product/ProductCard.vue b/frontend/components/global/product/ProductCard.vue index b1f3563..7dee340 100644 --- a/frontend/components/global/product/ProductCard.vue +++ b/frontend/components/global/product/ProductCard.vue @@ -4,6 +4,14 @@ import Tag from "~/components/global/Tag.vue"; import Rate from "~/components/global/Rate.vue"; import ColorCircle from "~/components/global/ColorCircle.vue"; +import { useRatio } from "~/composables/global/useRatio"; + +// state + +const containerEl = ref(null); +const { isOutside: isMouseOutsideContainer } = useMouseInElement(containerEl); +const parallax = reactive(useParallax(containerEl)); +const { isMobile } = useRatio(); // types @@ -29,50 +37,70 @@ const { id, colors } = toRefs(props); const limitedColors = computed(() => { return colors.value.slice(0, 3); }); + +const parallaxStyle = computed(() => { + if (!isMobile.value && isMouseOutsideContainer.value) { + return { + transform: `rotateX(0deg) rotateY(0deg)`, + transition: "0.3s ease-out all", + }; + } + + return { + transform: `rotateX(${parallax.roll * 20}deg) rotateY(${parallax.tilt * 20}deg)`, + transition: "0.3s ease-out all", + }; +});