js实现放大镜效果的思路与代码

2022-04-15 0 753

本文实例为大家分享了js实现放大镜效果的具体代码,供大家参考,具体内容如下

样式展示:

js实现放大镜效果的思路与代码

思路

先准备两张图片,一张小图,一张大图,并且两张图片有一个整数比值

在小图片的上方设置一个放大镜样式,背景设为透明色即可

大图片外边套一个父元素,超出父元素隐藏,大小为只能容纳你的放大部分即可
父元素与放大镜样式的比值=大图与小图的比值 

在小图片上进行鼠标移动时获取鼠标的坐标,得到鼠标当前处于小图片上的坐标
根据对应的比例求出大图片的坐标并移动大图片令放大部分处于父元素可见范围 

代码

1.html部分

<div id="box">
        <!-- toBig是放大镜元素 -->
     <div id="toBig"></div>
        <!-- 小图片 -->
  <img src="img/05.jpg" id="smallImg" width="800px">
</div>
<div id="beBig">
        <!-- 大图片,比例为1.5倍数 -->
  <img src="img/05.jpg" id="bigImg" width="1200px">
</div>

2.css样式部分

 *{
          margin: 0px;
          padding: 0px;
            }    
            #box{
             position: relative;
             float: left;
            }
   #toBig{
    width: 80px;
    height: 80px;
    border: 1px solid gray;
    background-color: transparent;
    position: absolute;
   }
   #beBig{
    float: left;
    overflow: hidden;
    border: 1px solid gray;
    position: relative;
    left: 40px;
    top:325px ;
   }
   #bigImg{
    position: absolute;
   }

3.脚本部分

<script type="text/javascript">
            //获取小图片,大图片,放大镜元素,大图片的父元素
   var smallImg=document.querySelector("#smallImg");
   var bigImg=document.querySelector("#bigImg");
   var toBig=document.querySelector("#toBig");
   var beBig=document.querySelector("#beBig");
 
            /*在页面加载时就先计算出小图片与大图片的比例*/
            var q=0;
   window.onload=function(){
    q=bigImg.offsetWidth/smallImg.offsetWidth;
                //根据放大镜的宽高和比例计算要显示放大内容的大小
    beBig.style.width = toBig.clientWidth * q +"px";
    beBig.style.height = toBig.clientHeight * q +"px";
   }
            //获取放大镜元素的中心,保证鼠标在放大镜中心
   var xCenter=toBig.clientWidth/2;
   var yCenter=toBig.clientHeight/2;
 
            //flag是一个标志,当鼠标按下时为true,可以进行移动
   flag=false;
   toBig.onmousedown = function(){
    flag=true;
   }
   toBig.onmouseup = function(){
    flag=false;
   }
   
   window.onmousemove=function(ev){
    var ev = ev || window.event;
                //flag为true时,放大镜元素被按下并可以进行拖动
    if(flag){
                    //获取鼠标当前所在位置并计算除了元素自身外要移动的位置
     var mouseX=ev.clientX,mouseY=ev.clientY;
     var trueX=mouseX - xCenter;
 
                    //判断放大镜元素是否超出小图片范围
     if(trueX < smallImg.offsetLeft){
      trueX = smallImg.offsetLeft;
     }
     if(trueX > smallImg.clientWidth - toBig.offsetWidth){
      trueX = smallImg.clientWidth - toBig.offsetWidth;
     }
     var trueY=mouseY - yCenter;
     if(trueY <= smallImg.offsetTop){
      trueY = smallImg.offsetTop;
     }
     if(trueY > smallImg.clientHeight - toBig.offsetHeight){
      trueY = smallImg.clientHeight - toBig.offsetHeight;
     }
 
                    //小图片移动
     toBig.style.left = trueX + "px";
     toBig.style.top = trueY + "px";
     console.log(trueX,trueY);
     
     // 大图片要移动的位置
     
     bigImg.style.left =-(trueX * q) + "px";
     bigImg.style.top =-(trueY * q) + "px";
    }
   }
   
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持NICE源码。

免责声明:
1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

NICE源码网 JavaScript js实现放大镜效果的思路与代码 https://www.niceym.com/25999.html