欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

jquery实现放大镜简洁代码(推荐)

程序员文章站 2022-07-05 20:24:46
简介 网上有许多放大镜的jquery的插件,但是用着不是那么得心应手,现在一页代码实现一个放大镜功能,如果需要附加的功能可以手动修改,原理都在注释里 <...

简介

网上有许多放大镜的jquery的插件,但是用着不是那么得心应手,现在一页代码实现一个放大镜功能,如果需要附加的功能可以手动修改,原理都在注释里

jquery实现放大镜简洁代码(推荐)

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>放大镜效果</title>
  <style type="text/css">
    * {
      margin: 0;
      padding: 0;
    }
    .small {
      margin-left:40px;
      margin-top:50px;
      width: 150px;
      height: 150px;
      /*border: 2px solid yellow;*/
    }
     .small>img {
      width: 150px;
      height: 150px;
    } 
    .slider {
      width: 50px;
      height: 50px;
      background: rgba(180,180,135,0.3);
      position: absolute;
      display: none;
    }
    #big {
      //设置为固定大小;
      width: 200px;
      height: 200px;
      position: absolute;
      /* border: 2px solid red;*/
      overflow: hidden;
      display: none;
    }
  </style>
</head>
<body>
<!--缩略图-->
<div class="small">
  <img src="thumb.jpg" />
  <!--放大镜,在原图不上的小块-->
  <div class="slider"></div>
</div>
<!--放大镜区域,大图,设置为none隐藏-->
<div id="big">
  <img id="bigimg" src="big.jpg" />
</div>
even.clientx<input type="text" value="0" id="test" /><br/>
even.clienty<input type="text" value="0" id="test1" />
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript">
  var small = $(".small")[0];
  var slider = $(".slider")[0];
  var big = document.getelementbyid("big");//试一试js获取
  var bigimg = document.getelementbyid("bigimg");
//让slider跟随鼠标移动.给小的方块绑定事件
  $(".small").mousemove(function(e) {
    var even = e || event; //兼容火狐浏览器
    var x = even.clientx - small.offsetleft - slider.offsetwidth/2;
    var y = even.clienty - small.offsettop - slider.offsetheight/2;
//测试even.clientx和even.clienty
    $("#test").val(even.clientx);
    $("#test1").val(even.clienty);
//水平方向的最大值
    var maxx = small.clientwidth - slider.clientwidth;
//竖直方向的最大值
    var maxy = small.clientheight - slider.clientheight;
    if(x<0){
//相当于超出左侧,超出左侧时,拉回
      x=0;
    }
//超出右侧时拉回
    if(x>maxx){
      x = maxx;
    }
//顶部超出
    if(y<0){
      y=0;
    }
//底部超出
    if(y>maxy){
      y = maxy;
    }
    slider.style.top = (y+small.offsettop) + "px";
    slider.style.left = (x+small.offsetleft) + "px";
//放大的图片的主要实现代码:比例计算, big.scrollleft是id=big的div中下方滚轴的位置
//由于id=big的div设置成固定大小,而图片又非常大,所以这个div就像个放大镜一样在大图上晃
//比例计算很简单,鼠标在缩略图的位置与缩略图宽高比=鼠标在大图位置与大图宽高比,现在未知数是大图鼠标的位置
    big.scrollleft = x/maxx * (bigimg.clientwidth - big.clientwidth) ;
    big.scrolltop = y/maxy * (bigimg.clientheight -big.clientheight) ;
  });
//鼠标移入事件
  $(".small").mouseenter(function(){
//鼠标移入到缩略图时候实现,上面出现的小的方块
    $(".slider").css("display","block");
    $("#big").css("top",small.offsettop+"px");
//隐藏的大图=获取左图的左边位置+宽度+10(隔开点缝隙与缩略图)+px
    big.style.left = small.offsetleft + small.offsetwidth + 10 + "px";
//右侧的大图区域显示出来图片
    $("#big").css("display","block");
  });
//移除事件
//添加鼠标移出事件,鼠标移出缩略图的时候
  $(".small").mouseleave(function(){
    $(".slider").css("display","none");
    $("#big").css("display","none");
  }); 
</script>
</body>
</html>

下载demo

...

链接: http://pan.baidu.com/s/1nvmbgb3

以上所述是小编给大家介绍的jquery实现放大镜简洁代码,希望对大家有所帮助