zoukankan      html  css  js  c++  java
  • jquery实现放大镜简单方法

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    <!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;
           150px;
          height: 150px;
          /*border: 2px solid yellow;*/
        }
         .small>img {
           150px;
          height: 150px;
        }
        .slider {
           50px;
          height: 50px;
          background: rgba(180,180,135,0.3);
          position: absolute;
          display: none;
        }
        #big {
          //设置为固定大小;
           200px;
          height: 200px;
          position: absolute;
          /* border: 2px solid red;*/
          overflow: hidden;
          display: none;
        }
      </style>
    </head>
    <body>
    <!--缩略图-->
    <p class="small">
      <img src="thumb.jpg" />
      <!--放大镜,在原图不上的小块-->
      <p class="slider"></p>
    </p>
    <!--放大镜区域,大图,设置为none隐藏-->
    <p id="big">
      <img id="bigImg" src="big.jpg" />
    </p>
    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的p中下方滚轴的位置
    //由于id=big的p设置成固定大小,而图片又非常大,所以这个p就像个放大镜一样在大图上晃
    //比例计算很简单,鼠标在缩略图的位置与缩略图宽高比=鼠标在大图位置与大图宽高比,现在未知数是大图鼠标的位置
        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>

    相关推荐:

  • 相关阅读:
    以后面试官再问你三次握手和四次挥手,直接把这一篇文章丢给他
    聊聊面试中常问的GC机制
    四面快手、终拿Offer,想告诉你的一些事情
    深入浅出14个Java并发容器
    Dubbo 在 K8s 下的思考
    一文带你深入浅出Spring 事务原理
    如何高效选择一款消息队列?
    当面试官要你介绍一下MQ时,该怎么回答?
    淘宝双11促销背后采用什么架构技术来实现网站的负载均衡
    Android 更改按钮样式 Button Styles
  • 原文地址:https://www.cnblogs.com/pegasus827/p/9650042.html
Copyright © 2011-2022 走看看