zoukankan      html  css  js  c++  java
  • JS——放大镜

    放大镜:

    1、比例系数要恒定:在系数为4的情况下,若原图是820*512,那么小图必须是205*128,放大镜若是50,原图显示区域必须200

    2、计算鼠标在小图中的坐标

    3、放大镜需要在鼠标中间位置,也就是鼠标在盒子中的坐标减去其宽度高度的一半

    4、放大镜移动范围:marginLeft、marginTop的值必须是0到小图宽度、高度减去放大镜宽度、高度

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            * {
                padding: 0;
                margin: 0;
            }
    
            .box {
                width: 400px;
                margin: 150px auto;
                position: relative;
            }
    
            .small {
                position: relative;
                width: 205px;
                height: 128px;
                border: 1px solid #CCA55B;
            }
    
            .magnifier {
                position: absolute;
                top: 0;
                left: 0;
                width: 50px;
                height: 50px;
                background-color: #ccc;
                opacity: 0.3;
                display: none;
                cursor: move;
            }
    
            .big {
                position: absolute;
                width: 200px;
                height: 200px;
                border: 1px solid red;
                top: 0;
                left: 215px;
                display: none;
                overflow: hidden;
            }
        </style>
    </head>
    <body>
    <div class="box">
        <div class="small">
            <img src="images/nba.jpg" width="205">
            <div class="magnifier"></div>
        </div>
        <div class="big">
            <img src="images/nba.jpg" style="float: left">
        </div>
    </div>
    <script>
        var box = document.getElementsByTagName("div")[0];
        var samll = box.children[0];
        var magnifier = samll.children[1];
        var big = box.children[1];
        var img = big.children[0];
        //1、进入盒子显示,离开隐藏
        samll.onmouseenter = function () {
            magnifier.style.display = "block";
            big.style.display = "block";
        }
    
        samll.onmouseleave = function () {
            magnifier.style.display = "none";
            big.style.display = "none";
        }
    
        //2、鼠标进入盒子
        samll.onmousemove = function (ev) {
            var pageX = ev.pageX || scroll().left + ev.clientX;
            var pageY = ev.pageY || scroll().top + ev.clientY;
            //small.offsetLeft=0,因为他的相对的是box的距离就是0px,所以取box.offsetLeft的值
            var x = pageX - box.offsetLeft - magnifier.offsetWidth / 2;//让鼠标在放大镜中间
            var y = pageY - box.offsetTop - magnifier.offsetHeight / 2;//让鼠标在放大镜中间
    
            if (x < 0) {
                x = 0;
            }
            //samll.offsetWidth包括了2px的边框
            if (x >= samll.offsetWidth - 2 - magnifier.offsetWidth) {
                x = samll.offsetWidth - 2 - magnifier.offsetWidth;
            }
            if (y < 0) {
                y = 0;
            }
            if (y >= samll.offsetHeight - 2 - magnifier.offsetHeight) {
                y = samll.offsetHeight - 2 - magnifier.offsetHeight;
            }
            magnifier.style.left = x + "px";
            magnifier.style.top = y + "px";
            var xiShu = (big.offsetWidth - 2) / magnifier.offsetWidth;//big.offsetWidth包括了2px边框的宽度
            img.style.marginLeft = -xiShu * x + "px";
            img.style.marginTop = -xiShu * y + "px";
        }
    
    
        function scroll() {
            return {
                "top": window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop,
                "left": window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft
            };
        }
    </script>
    </body>
    </html>

  • 相关阅读:
    新浪微博客户端提供源代码下载
    Windows Phone 7 Silverlight控件之Map的基本控制
    Android新增API之AudioEffect中文API与应用实例
    Android学习点点滴滴之获取系统可用内存
    Windows Phone 7独立存储空间IsolatedStorage
    iOS customized PageControl show page number.自定义PageControl,使用页码代替dot
    SilverlightQQDemo反编译(提供源代码)
    UnauthorizedAccessException Invaild crossthread access
    Windows Phone 7中使用PhoneApplicationService类保存应用程序状态
    在你的Windows Phone 7 应用程序中植入广告(广告控件的使用)
  • 原文地址:https://www.cnblogs.com/wuqiuxue/p/7977079.html
Copyright © 2011-2022 走看看