zoukankan      html  css  js  c++  java
  • js放大镜代码

    js原生放大镜

    <!DOCTYPE html>
    <html>
    <head>
        <title>放大镜</title>
        <meta charset="utf-8">
        <style type="text/css">
            *{
                margin: 0px;
                padding: 0px;
            }
            body{
                 960px;
                margin:40px auto;
            }
            #small{
                 300px;
                height: 200px;
                border:1px solid #eee;
                border-radius: 4px;
                position: relative;
            }
    
            #small img{
                 100%;
                height: 100%;
            }
    
            div    {
                float: left;
                margin-right: 10px;
            }
    
            #big{
                 300px;
                height: 200px;
                overflow: hidden;
                position: relative;
                border:1px solid #eee;
                border-radius: 4px;
                display: none;
            }
    
            #look_girl{
                position: absolute;
                left: 0px;
                top:0px;
            }
    
            #move{
                 100px;
                height: 100px;
                background:#000;
                opacity: .5;
                position: absolute;
                display: none;
                left: 0px;
                top: 0px;
            }
        </style>
    
    </head>
    <body>
        <div id="small">
            <img src="1.png">
            <p id="move"></p>
        </div>
        <div id="big">
            <img src="1.png" id="look_girl">
        </div>
    </body>
    <script type="text/javascript">
        var move = document.getElementById('move');    
        var small = document.getElementById('small');
        var big = document.getElementById('big');
        var look_girl = document.getElementById('look_girl');
        small.onmousemove = function(event){
            event = event || window.event;
            this.style.cursor = 'move';
            // 计算move移动块的left值
            var move_left = event.clientX - this.offsetLeft - move.offsetWidth/2;
            // 计算move移动块的top值
            var move_top = event.clientY - this.offsetTop - move.offsetHeight/2;
            // 超出左边界赋值为0
            move_left = move_left < 0 ? 0 : move_left;
            // 超出右边界赋值为盒子宽度-移动块的宽度
            move_left = move_left > this.offsetWidth - move.offsetWidth ? this.offsetWidth - move.offsetWidth : move_left;
            // 超出上边界赋值为0
            move_top = move_top < 0 ? 0 : move_top;
            // 超出下边界赋值为盒子高度-移动块高度
            move_top = move_top > this.offsetHeight - move.offsetHeight ? this.offsetHeight - move.offsetHeight : move_top;
            // 修改移动块left、top值
            move.style.left = move_left + 'px';
            move.style.top = move_top + 'px';
            /*
                计算图片需要移动的坐标
    
                距离左边left    图片宽度      盒子宽度          距离左边left    图片宽度           盒子宽度
                big_x/(look_girl.offsetWidth-big.offsetWidth) = move_left/(small.offsetWidth-move.offsetWidth);
    
                big_y/(look_girl.offsetHeight-big.offsetHeight) = move_top/(small.offsetHeight-move.offsetHeight);
    
            */
    
            var big_x = move_left/(small.offsetWidth-move.offsetWidth) * (look_girl.offsetWidth-big.offsetWidth);
            var big_y = move_top/(small.offsetHeight-move.offsetHeight) * (look_girl.offsetHeight-big.offsetHeight);
            // 修改图片定位
            look_girl.style.left = -big_x + 'px';
            look_girl.style.top = -big_y + 'px';
        }
    
        small.onmouseover = function(){
            move.style.display = 'block';
            big.style.display = 'block';
        }
    
        small.onmouseout = function(){
            move.style.display = 'none';
            big.style.display = 'none';
        }
    </script>
    </html>
    View Code
    方法二更好
  • 相关阅读:
    【转载】有效防止百度移动搜索转码
    jquery 弥补ie6不支持input:hover状态
    解决 IE6 position:fixed 固定定位问题
    png-24在ie6中的几种透明方法
    Chrome调试小技巧
    html select美化模拟jquery插件select2.js
    响应式设计的十个基本技巧
    colspan和rowspan
    【转】为什么整个互联网行业都缺前端工程师?
    设计模式之桥接模式
  • 原文地址:https://www.cnblogs.com/renfanzi/p/7891456.html
Copyright © 2011-2022 走看看