8.2让图片跟随鼠标的移动而移动或旋转

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

    <style>
        /* *:通配符,意思是所有的标签都有的属性。 */
        *{
            margin: 0;
            padding: 0;
        }
        body{
            background-color: rgb(254,249,237);
        }
        .img{
            width: 240px;
            height: 160px;
            position: absolute;
            /* 将图片作为背景 */
            background-image: url(https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fc-ssl.duitang.com%2Fuploads%2Fitem%2F202007%2F19%2F20200719223736_sfgmw.thumb.1000_0.gif&refer=http%3A%2F%2Fc-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1662018901&t=7b0520f8d678445a6d3bd62f87bff7fe);
            /* cover:保持图像的宽高比例,将图片缩放到正好【完全覆盖】定义的背景区域,保证长或宽的其中一边与图片相同
            contain:保持图像的宽高比例,将图片缩放到整个图片【完整进入】定义背景的区域空出来的区域出现平铺 */
            background-size: contain;
            /* 背景平铺: 不重复背景图像 */
            background-repeat: no-repeat;
        }
    </style>

    <script>
        // 获取img
        let img=document.querySelector(".img")
        // 图片角度旋转的角度
        let deg=0
        let imgx=0
        let imgy=0
        let imgl=0
        let imgt=0
        let y=0
        let index=0
        window.addEventListener("mousemove",function(xyz){
            //除2是为了让图片位于鼠标中心时不会移动
            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;
            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'

        },1)

    </script>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值