1、鼠标放大镜效果
鼠标放大镜效果,将鼠标移入到左图片,则可以在其右边看到放大的图片,且鼠标移动滑块的大小即为右图显示图片。实际效果如下图所示:
 
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style media="screen">
      #little_image {
        width: 400px;
        height: 400px;
        position: absolute;
        top: 0px;
        left: 0px;
      }
      #image {
        display: block;
        width: 400px;
        height: 400px;
        position: absolute;
      }
      #big_image {
        width: 500px;
        height: 500px;
        border: 1px solid grey;
        overflow: hidden;
        display: none;
        position: absolute;
        top: 0px;
        left: 400px;
      }
      #images {
        display: block;
        width: 1000px;
        height: 1000px;
        position: absolute;
      }
      #slider_block {
        width: 200px;
        height: 200px;
        position: absolute;
       
        border: 1px solid lightgrey;
        cursor: all-scroll;
        display: none;
      }
    </style>
  </head>
  <body>
    <div id="little_image">
      <img src="img/1.png" alt="" id="image"/>
      <div id="slider_block">
      </div>
    </div>
    <div id="big_image">
      <img src="img/31.png" alt="" id="images"/>
    </div>
  </body>
  <script type="text/javascript">
    var littleImage = document.getElementById('little_image');
    var bigImage = document.getElementById('big_image');
    var sliderBlock = document.getElementById('slider_block');
    //为littleImage添加鼠标移入事件
    littleImage.onmousemove = function(event) {
      event = event || window.event;
      sliderBlock.style.display = "block"; //移入鼠标显示sliderBlock
      bigImage.style.display = "inline-block";    //移入鼠标显示bigImage
 
      // 1、限定sliderBlock的活动范围
      var disX = event.clientX - sliderBlock.offsetWidth / 2;      //鼠标点击位置-移动块宽度的1/2
      var disY = event.clientY - sliderBlock.offsetHeight / 2;
     //最大移动位置就是little_image的宽度-移动块的宽度
      var distenceMaxX = littleImage.offsetWidth - sliderBlock.offsetWidth; 
      var distenceMaxY = littleImage.offsetHeight - sliderBlock.offsetHeight;
      if (disX < 0) {
        disX = 0;
      } else if (disX >= distenceMaxX) {
        disX = distenceMaxX
      }
      if (disY < 0) {
        disY = 0;
      } else if (disY >= distenceMaxY) {
        disY = distenceMaxY;
      }
      // 2、通过改变sliderBlock的left和top的指来让sliderBlock随着鼠标移动
      sliderBlock.style.left = disX + "px";
      sliderBlock.style.top = disY + "px";
      // 3、通过计算sliderblock在littleImage的比例,计算bigImage在大图中显示的比例
      var scaleX = disX / distenceMaxX;  
      var scaleY = disY / distenceMaxY;
      var images = document.getElementById('images');
      bigImage.scrollLeft = (images.offsetWidth - bigImage.offsetWidth) * scaleX;
      bigImage.scrollTop = (images.offsetHeight - bigImage.offsetHeight) * scaleY;
    }
     //添加鼠标移出事件
    littleImage.onmouseleave = function() {
      sliderBlock.style.display = 'none';   //  sliderBlock隐藏
      bigImage.style.display = 'none';      //  bigImage隐藏
    }
  </script>
</html>
 
附:offset | client | scroll 关系图

最新文章

  1. node中的cmd规范
  2. mybatis hibernate比较
  3. phpcms 服务器安全认证错误
  4. window.location.href 中文乱码问题。。。。
  5. 使用ConditionalScope进行高效的SharePoint CSOM编程
  6. CSS文字控制与文本控制
  7. VirtualBox 导入.vdi文件时报“uuid is exists”错误
  8. Item with the same id &quot;98&quot; already exist
  9. HDU 4669 Mutiples on a circle (DP , 统计)
  10. some links
  11. CCF 201612-1 中间数
  12. Win7电脑桌面的Administrator图标没了怎么办
  13. ●BZOJ 1492 [NOI2007]货币兑换Cash
  14. Linux 系统的总管 Systemd
  15. pyppeteer爬虫例子
  16. Java中输出正则表达式匹配到的内容
  17. NUnit使用
  18. PHP 快速建立一个对象
  19. 【转】Elasticsearch5.0 安装问题集锦
  20. ZROJ#398. 【18提高7】随机游走(期望dp 树形dp)

热门文章

  1. fasthttp:比net/http快十倍的Go框架(server 篇)
  2. python 读注册表 检测NET版本
  3. python 读写sql2008 类
  4. 自定义注解@MyBatisRepository
  5. [刘阳Java]_第一个Java程序_第7讲
  6. element ui table表头动态筛选条件
  7. Java 获取Word批注所标记的文本和图片
  8. python + csv 操作(读写)
  9. 微信小程序云开发-数据条件查询
  10. session及cookie详解(七)