zoukankan      html  css  js  c++  java
  • JavaScript--放大镜

    上例图: 

      1 <!DOCTYPE html>
      2 <html>
      3 <head lang="en">
      4     <meta charset="UTF-8">
      5     <title></title>
      6     <style>
      7         * {
      8             margin: 0;
      9             padding: 0;
     10         }
     11 
     12         .box {
     13              350px;
     14             height: 467px;
     15             margin: 100px;
     16             border: 1px solid #ccc;
     17             position: relative;
     18             /*overflow: hidden;*/
     19         }
     20 
     21         .big {
     22              400px;
     23             height: 400px;
     24             position: absolute;
     25             top: 0;
     26             left: 360px;
     27             border: 1px solid #ccc;
     28             overflow: hidden;
     29             /*display: none;*/
     30             opacity: 0.1;
     31             z-index: -1;
     32             /*transform: translateX(-500px) scale(0);*/
     33             transition: all .4s;
     34         }
     35 
     36         .mask {
     37              175px;
     38             height: 175px;
     39             background: rgba(255, 255, 0, 0.4);
     40             position: absolute;
     41             top: 0px;
     42             left: 0px;
     43             cursor: move;
     44             display: none;
     45         }
     46 
     47         .small {
     48             position: relative;
     49         }
     50         .box:hover .mask{
     51             display: block;
     52         }
     53         .box:hover .big{
     54             transform: translateX(0px)  scale(1);
     55             opacity: 1;
     56             z-index: 1;
     57             /*display: block;*/
     58         }
     59     </style>
     60 </head>
     61 <body>
     62 <div class="box" id="box">
     63     <div class="small"><!--小层-->
     64         <img src="img/small2.jpg" width="350" alt=""/>
     65         <div class="mask" id="mask"></div><!--遮挡层-->
     66     </div>
     67     <div class="big" id="big"><!--大层-->
     68         <img src="img/big2.jpg" width="800" alt=""/><!--大图-->
     69     </div>
     70 </div>
     71 </body>
     72 </html>
     73 <script>
     74     /*以下注释的代码用CSS代替了*/
     75 //    var box = document.getElementById("box");
     76 //    var mask = document.getElementById("mask");
     77 //    var big = document.getElementById("big");
     78 
     79 //    box.onmouseover = function () {
     80 //        mask.style.display = "block";
     81 //        big.style.display = "block";
     82 //    }
     83 //    box.onmouseout = function () {
     84 //        mask.style.display = "none";
     85 //        big.style.display = "none";
     86 //    }
     87 
     88     /**
     89      * 1.鼠标移上大分区,遮罩层和大图显示
     90      * 2.鼠标移出大分区,遮罩层和大图隐藏
     91      * 3.鼠标在大分区内移动的时候,遮罩层跟鼠标移动,大图也跟着移动
     92      * */
     93 
     94     var box = document.getElementById("box");
     95     var mask = document.getElementById("mask");
     96     var bigImg = document.getElementById("big").children[0];
     97     box.onmousemove = function (event) {
     98         var pageX = event.pageX;
     99         var pageY = event.pageY;
    100         // 数据有了,我们希望盒子跟着鼠标走
    101         // 由于盒子是绝对定位,所以基于页面获取到的坐标要做处理
    102         // 目标数据 = 鼠标在页面的坐标 - 大盒子距离页面的坐标
    103         var boxOffsetLeft =  box.offsetLeft ;
    104         var boxOffsetTop =  box.offsetTop;
    105         var boxOffsetWidth = box.offsetWidth;
    106         var boxOffsetHeight =  box.offsetHeight;
    107 
    108         var maskOffsetWidth = mask.offsetWidth;
    109         var maskOffseetHeight = mask.offsetHeight;
    110         // 让鼠标在mask盒子中心拖拽移动
    111         var mX = pageX - boxOffsetLeft -maskOffsetWidth/2;
    112         var mY = pageY - boxOffsetTop  - maskOffseetHeight/2;
    113         // 以下判断mask盒子是否越出父盒子
    114         if(mX < 0) {
    115             mX = 0 ;
    116         }
    117         if(mY < 0) {
    118             mY = 0 ;
    119         }
    120         if(mX > boxOffsetWidth - maskOffsetWidth) {
    121             mX = boxOffsetWidth -maskOffsetWidth;
    122         }
    123         if(mY > boxOffsetHeight - maskOffseetHeight) {
    124             mY = boxOffsetHeight - maskOffseetHeight;
    125         }
    126         // 设置mask盒子位置
    127         mask.style.left = mX + "px";
    128         mask.style.top = mY + "px";
    129         // 获取比例设置大图等比例的位置
    130         var bili = bigImg.offsetWidth/boxOffsetWidth;
    131         bigImg.style.marginLeft = -mX*bili + "px";
    132         bigImg.style.marginTop = -mY*bili + "px";
    133 
    134 
    135     }
    136 
    137 </script>
  • 相关阅读:
    DevExpress WinForms v21.1 重磅升级桑基图控件
    UI组件库Kendo UI for Angular R3 2021新版亮点 支持Bootstrap 5
    Java随笔
    oracle 排序性能 监控,Oracle 常用性能监控SQL语句
    Oracle数据库管理常用的监控脚本极大的简化运维工作
    oracle误删除数据的恢复方法
    Oracle数据库之同义词
    MVCC详解
    goldengate classic extract在什么情况需要重建以及如何重建
    Oracle OGG Kafka
  • 原文地址:https://www.cnblogs.com/mrszhou/p/7731968.html
Copyright © 2011-2022 走看看