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>
  • 相关阅读:
    myeclipse python下配置文档说明_转载
    Python快速教程博客园地址
    Mysql_存储功能
    Java_链表实现
    浅谈JAVA集合框架(转载)_常用的Vector和HashMap
    Java_Vector类的使用,以及Stack继承Vector,推出的栈的特性
    JavaWeb_数据传输_原
    HTML <input> 标签的 type 属性
    Java_Web_request.setAttribute("result",username);
    秦柯视频与文档资料-全集
  • 原文地址:https://www.cnblogs.com/zhangzhengyang/p/11204253.html
Copyright © 2011-2022 走看看