Mavericks にマウスの移動イベントを追跡させます

最近少し遅れて申し訳ありませんが、今日は非常に興味深いボタンを持ってきました。マーベリックスがマウスの動きを追跡するケースです。

HTML

 <div class="img"></div>

まさにそのような箱

そしてCSS部分

*{
        margin: 0;
        padding: 0;
      }
      body{
        background: rgb(240,230,240);
      }
      .img{
        width: 50px;
        height: 50px;
        position: absolute;
        background-image: url(./images/0112.gif);
        background-size: cover;
      }

次に、JS 部分

最初のステップは、アニメーション効果用の img 要素を取得する必要があるため、各方向の小さな画像の位置を定義しましょう。コメントは以下に書かれています。見てください。その後、マウスを実行する必要があります。移動イベント、では、なぜこの部分を 2 で割って、画像が中央にあるときに動かないようにします。XY 軸を取得した後、次の式を設定する必要があります。

マウスが動くたびにふくらはぎも一緒に動かします。次にマウスの位置を定義します。それから判断します。X 軸より大きい場合は反転する必要があります。それ以外の場合は反転する必要はありません。以下は、私たちが設定した1時間の画像反転コードです

 let img=document.querySelector('.img')
    //定义小图片旋转角度
    let deg=0
    //定义小图片位于网页左侧位置
    let imgx=0
    //定义小图片位于网页顶侧位置
    let imgy=0
    //定义小图片位置
    let imgl=0
    //定义小图片y轴位置
    let imgt=0
    //定义小图片翻转角度
    let y=0
    //定义一个定时器
    let index =0

    window.addEventListener('mousemove', function(xyz){
        //获取网页左侧位于图片位置
        imgx=xyz.x - img.offsetLeft - img.clientWidth /2
        //多去网页顶部距离图片位置
        imgy=xyz.y - img.offsetTop - img.clientHeight /2
        //套入公司 定义图片旋转角度·
        deg=360*Math.atan(imgy/imgx)/(2*Math.PI)
        //每当鼠标移动的时候重置
        index=0
        //定义当前鼠标位置
        let x = event.clientX
        //当前鼠标x轴大于图片时候,牛牛要对这鼠标,所有需要图片翻转一下,否则就不需要翻转
        if(img.offsetLeft<x){
            y=180
        }else{
            y=0
        }
    })
    setInterval(()=>{
        //设置小图片旋转和翻转
        img.style.transform ="rotateZ("+deg+"deg) rotateY("+y+"deg)"
        index++
        //设置小图片位置速度,判断小图片随着位置停止移动
        if(index<50){
            imgl+=imgx/50
            imgt+=imgy/50
        }
        img.style.left = imgl+"px"
        img.style.top = imgt+"px"

    })

次に、皆さんがコピーできるように、ソースコードを直接置きます

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
      *{
        margin: 0;
        padding: 0;
      }
      body{
        background: rgb(240,230,240);
      }
      .img{
        width: 50px;
        height: 50px;
        position: absolute;
        background-image: url(./images/0112.gif);
        background-size: cover;
      }
    </style>
</head>
<body>
   <div class="img"></div>
</body>
<script>
    let img=document.querySelector('.img')
    //定义小图片旋转角度
    let deg=0
    //定义小图片位于网页左侧位置
    let imgx=0
    //定义小图片位于网页顶侧位置
    let imgy=0
    //定义小图片位置
    let imgl=0
    //定义小图片y轴位置
    let imgt=0
    //定义小图片翻转角度
    let y=0
    //定义一个定时器
    let index =0

    window.addEventListener('mousemove', function(xyz){
        //获取网页左侧位于图片位置
        imgx=xyz.x - img.offsetLeft - img.clientWidth /2
        //多去网页顶部距离图片位置
        imgy=xyz.y - img.offsetTop - img.clientHeight /2
        //套入公司 定义图片旋转角度·
        deg=360*Math.atan(imgy/imgx)/(2*Math.PI)
        //每当鼠标移动的时候重置
        index=0
        //定义当前鼠标位置
        let x = event.clientX
        //当前鼠标x轴大于图片时候,牛牛要对这鼠标,所有需要图片翻转一下,否则就不需要翻转
        if(img.offsetLeft<x){
            y=180
        }else{
            y=0
        }
    })
    setInterval(()=>{
        //设置小图片旋转和翻转
        img.style.transform ="rotateZ("+deg+"deg) rotateY("+y+"deg)"
        index++
        //设置小图片位置速度,判断小图片随着位置停止移动
        if(index<50){
            imgl+=imgx/50
            imgt+=imgy/50
        }
        img.style.left = imgl+"px"
        img.style.top = imgt+"px"

    })
    
</script>
</html>

素材は表紙にあります、よろしくお願いします

おすすめ

転載: blog.csdn.net/weixin_64965154/article/details/131336355