js 图片视频跟着鼠标指针 “左右” 动

本文介绍了一个JavaScript函数,通过计算鼠标移动的方向来实现玩家和图片元素的实时缩放效果。当鼠标上下或左右移动时,元素会相应地进行平移和旋转。关键代码片段展示了如何根据方向变化调整元素的位置和旋转角度。
摘要由CSDN通过智能技术生成


    var playerCount = 0;
    var imgCount = 0;
    /*
    * @description:计算鼠标的方向
    * @param:浏览器属性,元素
    * @author:aleck
    * @create:2021/08/25
    *
    * */
    function XYZ(e,player){
        var w = player.offsetWidth,
         h = player.offsetHeight,
         toTop = player.getBoundingClientRect().top + document.body.scrollTop, //兼容滚动条
         x = (e.pageX - player.getBoundingClientRect().left - (w / 2)) * (w > h ? (h / w) : 1),   //获取当前鼠标的x轴位置
         y = (e.pageY - toTop - h/2) * (h > w ? (w / h) : 1),
        //上面对长方形也做了兼容,也就是按照最小的那个边的一半作为半径了
        //例如有一个宽6,高是2的矩形 右上角的坐标就是{x:3,y:1},经过上面的计算后{x:2/6 * 3,y:1}=》{x:1,y:1}
        // 算出来也就是45°的样子
        //如果是正方形,可以去掉后面的系数(w>h && h>w)
        //direction的值为“0,1,2,3”分别对应着“上,右,下,左”
         direction = Math.round((((Math.atan2(y, x) * 180 / Math.PI) + 180) / 90) + 3) % 4;
         //eventType = e.type,//
       // res = Math.atan2(y, x) / (Math.PI / 180) + 180 ,//试试其他的计算
        // console.log(((Math.atan2(y, x) * 180 / Math.PI) + 180));
        // console.log(Math.round((Math.atan2(y, x) / (Math.PI / 180) + 180) / 90 + 3) % 4);
         //dirName = new Array('上方','右侧','下方','左侧');
        //dirName[direction]
        return direction;
    }




    var player = document.getElementById("player");
    var img = document.getElementById("img");
    player.addEventListener('mousemove',mouseMove,false);
    img.addEventListener('mousemove',mouseMove,false);
    function mouseMove(ev)
    {
        Ev= ev || window.event;
        var res = XYZ(ev,player);
       // console.log(res);
//“0,1,2,3”分别对应着“上,右,下,左”
              switch (res){
                  case 0:
                  case 2:
                  case 3:
                      //左
                      playerCount -= 0.0009;
                      imgCount -= 0.0001;
                      if(playerCount>1 || imgCount>1){
                          playerCount -= 0.02;
                          imgCount -= 0.01;
                      }
                      break;
                  case 1:
                      //右
                      playerCount += 0.009;
                      imgCount += 0.002;
                      break;
              }

             player.style.transform = " scale(1) translate("+  playerCount +"px, 0px) rotate(0deg)";
             img.style.transform = " scale(1) translate("+ imgCount +"px, 0px) rotate(0deg)";
    }




  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值