js 实现鼠标在div上移动的侧重动画,快来白嫖~

发布时间 2023-07-05 16:58:53作者: 你若愿意,我一定去

 

<template>
  <div @mousemove="onHandleMousemove"
       @mouseup="onHandleMouseend"
       @mouseleave="onHandleMouseend"
       class="block" ></div>
</template>

<script setup>

const onHandleMousemove = (e) => {
  const {offsetX, offsetY, target} = e;
  const {clientWidth, clientHeight} = target;
  // 计算中点坐标
  const cx = clientWidth / 2, cy = clientHeight / 2;
  // 距离中心点的偏移
  const offsetcy = offsetY - cy;
  const offsetcx = offsetX - cx;
  // 计算各轴的旋转度,按百分比
  let retatex = offsetcx/cx * 15;
  let retatey = -offsetcy/cy * 12;

  target.style.transform = `perspective(1000px) rotateX(${retatey}deg) rotateY(${retatex}deg) scale3d(1.05, 1.05, 1.05)`;
}

const onHandleMouseend = (e) => {
  const {offsetX, offsetY, target} = e;
  target.style.transform = `perspective(1000px) rotateX(0deg) rotateY(0deg) scale3d(1, 1, 1)`;
}
</script>

<style scoped>
.block {
  height: 160px;
  width: 80%;
  margin: 50px auto;
  background: #004b43;
  perspective: 10000px;
  position: relative;
  transition: all 0.1s linear;
}
.block::after {
  content: "";
  height: 6px;
  width: 6px;
  background: #fd00b8;
  border-radius: 3px;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
</style>