最简单原生js实现京东放大镜效果

最简单原生js实现京东放大镜效果

具体效果如图下,左边半透明小罩罩是放大镜,右边大框框是显示效果啦
...

需求分析一下下

1.我们得做一个小罩罩(放大镜),这个小罩罩得跟着我们走哦
2.我们得根据小罩罩的位置,让我们的大框框显示放大后图片对应的位置呀

呀呀呀太难说了,直接上代码吧

html结构

我把结构分成了两部分,第一部分是放原图和放大镜的,第二部分是放大后的效果图的。

<div class="box">
        <!-- 原图和放大镜 -->
        <div class="box1">
            <img src="images/u0.jpg" alt="">
            <div class=" magnifyingGlass"></div>
        </div>
        <!-- 放大效果展示 -->
        <div class="box2">
            <img src="images/u0.jpg" alt="">
        </div> 
    </div>
css样式

css要注意的是一定要有定位哦,因为我们得通过定位让放大镜移动嘛,放大效果图也一样的哦。

  *{
            margin: 0;
            padding: 0;
        }
        .box{
            position: relative;
            width: 700px;
            height: 350px;
            border: 1px solid black;
        }
        .box>.box1{
            position: relative;
            width: 300px;
            height: 150px;
            cursor: pointer;
          
        }
        .box>.box1>img{
            width: 100%;
            height: 100%;
       
        }
        .box>.box1>.magnifyingGlass{
            position: absolute;
            top: 0;
            left: 0;
            width: 50px;
            height: 50px;
            background-color: rgba(31, 29, 30, 0.5);
        }


        .box>.box2{
            position: absolute;
            right: 50px;
            top: 0;
            width: 250px;
            height: 250px;
            border: 1px solid pink;
            overflow: hidden;
        }
        .box>.box2>img{
            position: absolute;
            width: 1500px;
            height: 750px;
            top: 0;
            left: 0;
        }
js行为代码

这个每一点我都有注释哦,超良心博主就是my啦

  // 获取dom元素呀
       var bigGlass = document.querySelector('.magnifyingGlass')
       var box1 = document.querySelector('.box1')
       var img = document.querySelectorAll('img')[1]
        // 先让小罩罩和大框框里面的图片隐藏哦
       img.style.display = 'none'
       bigGlass.style.display = 'none'
    //    这个是鼠标在浏览器上滑动触发的事件啦
       document.onmousemove = function(e){
        //    这个是要做一下兼容处理啦
           var ev = e || event
        //    这个是获取鼠标移动时的x,y坐标哦,这个25其实是小罩罩宽度的一半啦,其实是我想让鼠标在罩罩的中心啦。 
             var x = ev.clientX-25
             var y = ev.clientY-25
            //  这个就可以让小罩罩跟着鼠标移动啦
             bigGlass.style.left = x+'px'
            //  这个是让放大效果图跟着鼠标移动啦,这个5呢,我是让图片放大到了原图的5倍哦
             img.style.left = -x*5+'px'
             bigGlass.style.top = y+'px'
             img.style.top = -y*5+'px'
            // 这里做了一下条件处理呀,当到达一个值让我们的小罩罩和效果图显示或隐藏啦
           if(ev.clientX>300||ev.clientY>150||ev.clientX<2||ev.clientY<2){
               bigGlass.style.display = 'none'
               img.style.display = 'none'
           }else{
            bigGlass.style.display = 'block'
            img.style.display = 'block'
           }

       }        

一个前端小白的日常找存在感,如果这文章给到了你那么一丢丢的帮助,记得点赞噢,如果发现本人的代码有误的地方,一定要告诉人家啦,咱们一起进步哟。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值