1、准备两张图片,其中一张图片分辨率为另一张图片的二倍。

2、前端页面布局
利用前端实现淘宝浏览商品放大镜的功能

//box1位左侧原图,box2为右侧放大图额显示框,son为iv class="box1">
    <div class="son"></div>
    <div class="ceng"></div>
</div>
<div class="box2"></div>

3、js写逻辑

let box1=document.querySelector(".box1");
    let box2=document.querySelector(".box2");
    let son=document.querySelector(".son");
    let ceng=document.querySelector(".ceng");
    //鼠标移入:son,box2出现
    ceng.onmouseenter=function(){
        son.style.display="block"
        box2.style.display="block"
    }
    //鼠标移出:son,box2消失
    ceng.onmouseleave=function(){
        son.style.display="none"
        box2.style.display="none"
    }
    //鼠标移动:son的位置随鼠标移动,box2背景图的位置变化
    ceng.onmousemove=function(e){
        let sw=e.clientX-son.offsetWidth/2
        let sh=e.clientY-son.offsetHeight/2       
        if(sw>ceng.offsetWidth-son.offsetWidth){
            sw=ceng.offsetWidth-son.offsetWidth
        }
        else if(sw<=0){
            sw=0;
        }
        if(sh>ceng.offsetHeight-son.offsetHeight){
            sh=ceng.offsetHeight-son.offHeight
        }
        else if(sh<=0){
            sh=0;
        }
        son.style.left=sw+"px"
        son.style.top=sh+"px"
        box2.style.backgroundPosition=`${-2*sw}px ${-2*sh}px`
    }

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>放大镜</title>
</head>
<style>
    *{
        margin: 0;
        padding: 0;
    }
    .box1{
        width: 500px;
        height:333px;
        /* border:1px solid red; */
        background: url('shatan.jpg') no-repeat;
        position: relative;
        float: left;
        box-sizing: border-box
    }
    .son{
        width: 100px;
        height: 100px;
        background-color: #fff;
        position: fixed;
        left:0;
        top:0;
        opacity: 0.7;
        display: none;
    }
    .ceng{
        width: 100%;
        height: 100%;
        position: absolute;
        top: 0;
        left: 0;
        z-index: 100;
    }
    .box2{
        width: 200px;
        height:200px;
        border:1px solid red;
        background: url('shatan1.jpg') no-repeat;
        float: left;
        display: none;
    }
</style>
<body>
    <div class="box1">
        <div class="son"></div>
        <div class="ceng"></div>
    </div>
    <div class="box2"></div>
</body>
</html>
<script>
    let box1=document.querySelector(".box1");
    let box2=document.querySelector(".box2");
    let son=document.querySelector(".son");
    let ceng=document.querySelector(".ceng");
    ceng.onmouseenter=function(){
        son.style.display="block"
        box2.style.display="block"
    }
    ceng.onmouseleave=function(){
        son.style.display="none"
        box2.style.display="none"
    }
    ceng.onmousemove=function(e){
        let sw=e.clientX-son.offsetWidth/2
        let sh=e.clientY-son.offsetHeight/2       
        if(sw>ceng.offsetWidth-son.offsetWidth){
            sw=ceng.offsetWidth-son.offsetWidth
        }
        else if(sw<=0){
            sw=0;
        }
        if(sh>ceng.offsetHeight-son.offsetHeight){
            sh=ceng.offsetHeight-son.offHeight
        }
        else if(sh<=0){
            sh=0;
        }
        son.style.left=sw+"px"
        son.style.top=sh+"px"
        box2.style.backgroundPosition=`${-2*sw}px ${-2*sh}px`
    }
</script>

相关文章:

  • 2022-12-23
  • 2021-06-07
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-09
猜你喜欢
  • 2022-12-23
  • 2021-05-24
  • 2022-12-23
  • 2021-11-16
  • 2021-05-11
  • 2022-12-23
相关资源
相似解决方案