zoukankan      html  css  js  c++  java
  • 练习-放大镜效果

    <!DOCTYPE html>
    <html lang="en">
    <!-- 这个放大镜效果只是固定图像到左上角,一旦图片更换位置就必须修改代码 -->
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="../jquery1.8.3/jquery.min.js">
        </script>
        <style>
            * {margin: 0; padding: 0; }
            #min { 350px; border: 1px solid skyblue;}
             #max { 350px; height: 350px; position: absolute; overflow: hidden; display: none;}
             #inner { 100px; height: 100px; position: absolute; top: 0; left: 0; background: rgba(0, 0, 0, .4); display: none;}
        </style>
    </head>
    
    <body>
    
        <img src="images/loupe.jpg" id="min" alt="">
        <div id="max"> <img src="images/loupe.jpg" alt=""></div>
        <div id="inner"></div>
    
        <script>
            $(document).mouseover(function() {
                var p = $('#min').offset();
                var w = $('#min').width();
                $('#max').css({
                    top: p.top,
                    left: p.left + w + 5
                }).show();
    
            }).mousemove(function(e) {
                $('#inner').css({
                    // 在移动的同时检测边界
                    top: pointY(e.pageY - 50),
                    left: pointX(e.pageX - 50)
                }).mousemove(function(e) {
    
                    $('#max').scrollTop((e.pageY-$('#min').offset().top) * 10 -175)
                             .scrollLeft((e.pageX-$('#min').offset().left) * 10 - 175);
    
                }).show();
    
                //判断鼠标是否越界,越过即隐藏遮罩层和右侧大图
                if(e.pageY>247 || e.pageY<=5 || e.pageX>350 ){
                    $('#max').hide();
                    $('#inner').hide();
                }
            });
    
            /*
                处理边界
                因为鼠标的移动是一种综合移动,同时包含了x轴和y轴的两个方向的值,
                那么把X轴和Y轴都分成两个部分来计算。各半部分控制一边的边界。
           --这里我用到了之前练习时候的小人移动的知识来解决这个边界问题。事实上也是不完美的,没有解决在任何位置的边界问题,
            也就是说,如果这个图片移动位置了,图片改变大小了,要重写。这个说法应该叫封装吧,下次找机会修改一下。
    */ function pointY(point){ return point>70?Math.min(point,147):Math.max(point,1); } function pointX(point){ return point>125?Math.min(point,250):Math.max(point,1); } </script> </body> </html>

    在线地址:http://www.yupinghua.com/practices/components/loupe.html

  • 相关阅读:
    数据文件对应的磁盘坏掉了,没有归档,没有备份
    Oracle OEM重建
    Verilog编码指南
    UART串口协议
    信号完整性以及串扰
    Perl-由报表转命令(展讯2015)
    论文-ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design
    时序路径分析模式
    后端设计各种设计文件格式说明
    Verilog-小数分频器(1.5)实现(待写)
  • 原文地址:https://www.cnblogs.com/yupinghua/p/6380459.html
Copyright © 2011-2022 走看看