zoukankan      html  css  js  c++  java
  • js放大镜的案例

      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4     <meta charset="UTF-8">
      5     <title></title>
      6     <style>
      7         * {
      8             margin: 0;
      9             padding: 0;
     10             list-style: none;
     11             border: none;
     12         }
     13 
     14         #box {
     15              350px;
     16             height: 350px;
     17             /*background-color: red;*/
     18             margin: 100px 0 0 100px;
     19             position: relative;
     20         }
     21 
     22         #small_box {
     23              100%;
     24             height: 100%;
     25             border: 1px solid #cccccc;
     26             box-sizing: border-box;
     27 
     28             position: relative;
     29         }
     30 
     31         #small_box img {
     32              100%;
     33             height: 100%;
     34         }
     35 
     36         #mask {
     37              100px;
     38             height: 100px;
     39             background-color: rgba(255, 255, 0, .4);
     40             position: absolute;
     41             left: 0;
     42             top: 0;
     43             cursor: move;
     44             /*隐藏*/
     45             display: none;
     46         }
     47 
     48         #big_box {
     49              600px;
     50             height: 600px;
     51             border: 1px solid #CCCCCC;
     52             /*定位*/
     53             position: absolute;
     54             left: 360px;
     55             top: 0;
     56 
     57             overflow: hidden;
     58             display: none;
     59         }
     60 
     61         #big_box img{
     62             position: absolute;
     63             left: 0;
     64             top: 0;
     65         }
     66 
     67         #list {
     68             margin: 20px 0 0 100px;
     69         }
     70 
     71         #list ul li {
     72             float: left;
     73             margin: 5px;
     74             cursor: pointer;
     75         }
     76     </style>
     77 </head>
     78 <body>
     79 <div id="box">
     80     <div id="small_box">
     81         <img src="images/pic001.jpg" alt="">
     82         <span id="mask"></span>
     83     </div>
     84     <div id="big_box">
     85         <img src="images/pic01.jpg" alt="">
     86     </div>
     87 </div>
     88 <div id="list">
     89     <ul>
     90         <li><img src="images/pic0001.jpg" alt=""></li>
     91         <li><img src="images/pic0002.jpg" alt=""></li>
     92         <li><img src="images/pic0003.jpg" alt=""></li>
     93         <li><img src="images/pic0004.jpg" alt=""></li>
     94     </ul>
     95 </div>
     96 
     97 <script>
     98     window.addEventListener('load', function (ev) {
     99         // 1. 获取标签
    100         var box = document.getElementById('box');
    101         var s_box = box.children[0];
    102         var b_box = box.children[1];
    103         var mask = s_box.children[1];
    104         var b_img = b_box.children[0];
    105         var list_lis = document.getElementById('list').getElementsByTagName('li');
    106 
    107         // 2. 监听鼠标进入小盒子
    108         s_box.addEventListener('mouseover', function (evt) {
    109             // 2.1 显示隐藏内容
    110             mask.style.display = 'block';
    111             b_box.style.display = 'block';
    112 
    113             // 2.2 监听鼠标的移动
    114             s_box.addEventListener('mousemove', function (evt1) {
    115                 var e = evt1 || window.event;
    116 
    117                 // 2.3 求出鼠标的坐标 让鼠标在盒子中间
    118                 var pointX = e.pageX - box.offsetLeft - mask.offsetWidth * 0.5;
    119                 var pointY = e.pageY - box.offsetTop - mask.offsetHeight * 0.5;
    120                 console.log(pointX)
    121 
    122                 // 2.4 边界检测
    123                 if (pointX < 0) {
    124                     pointX = 0
    125                 } else if (pointX > s_box.offsetWidth - mask.offsetWidth - 2) {
    126                     pointX = s_box.offsetWidth - mask.offsetWidth - 2
    127                 }
    128 
    129                 if (pointY < 0) {
    130                     pointY = 0
    131                 } else if (pointY > s_box.offsetHeight - mask.offsetHeight - 2) {
    132                     pointY = s_box.offsetHeight - mask.offsetHeight - 2
    133                 }
    134 
    135 
    136                 // 2.5 让放大镜走起来
    137                 mask.style.left = pointX + 'px';
    138                 mask.style.top = pointY + 'px';
    139 
    140                 // 2.6 让大盒子中的图片走起来
    141                 /*
    142                    smallX / bigX = sBox.width / 大盒子的宽度
    143                    bigX = smallX /  (sBox.width / 大盒子的宽度)
    144                 */
    145                 b_img.style.left = -pointX / (s_box.offsetWidth / b_box.offsetWidth) + 'px';
    146                 b_img.style.top = -pointY / (s_box.offsetHeight / b_box.offsetHeight) + 'px';
    147             });
    148         });
    149 
    150         // 3. 监听鼠标离开小盒子
    151         s_box.addEventListener('mouseout', function (evt) {
    152             // 2.1 显示隐藏内容
    153             mask.style.display = 'none';
    154             b_box.style.display = 'none';
    155         });
    156 
    157         // 4. 遍历列表的图片
    158         for (var i = 0; i < list_lis.length; i++) {
    159             (function (i) {
    160                 var li = list_lis[i];
    161                 li.addEventListener('mouseover', function (ev1) {
    162                     s_box.children[0].src = 'images/pic00'+ (i+1) +'.jpg';
    163                     b_img.src = 'images/pic0'+ (i+1) +'.jpg';
    164                 });
    165             })(i)
    166         }
    167     })
    168 </script>
    169 </body>
    170 </html>
  • 相关阅读:
    AcWing 157. 树形地铁系统 (hash判断树同构)打卡
    AcWing 156. 矩阵 (哈希二维转一维查询)打卡
    AcWing 144. 最长异或值路径 01字典树打卡
    AcWing 143. 最大异或对 01字典树打卡
    AcWing 142. 前缀统计 字典树打卡
    AcWing 139. 回文子串的最大长度 hash打卡
    AcWing 138. 兔子与兔子 hash打卡
    常用C库函数功能及用法
    编程实现C库函数
    C语言面试题5
  • 原文地址:https://www.cnblogs.com/zhangzhengyang/p/11204253.html
Copyright © 2011-2022 走看看