zoukankan      html  css  js  c++  java
  • 实用的JS图片放大镜特效

    实用的JS图片放大镜特效,鼠标放上后,根据鼠标悬停的区域放大图片,可用作产品图片放大,本图片放大的原理是调用大图片,在网页上以小图显示,鼠标悬停放大后的图像实际上是显示的原图片。因此来说,网页加载可能有点慢,测试时候请稍等片刻。

    【源代码展示】

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Js图片放大代码</title>
    <style type="text/css">
    #div1 { width:304px; height:222px; position:relative; margin:30px auto 0px;}
    #div1 img{width:304px; height:222px;}
    #div1 span { width:100px; height:100px; background:red; left:0px;top:0px; position:absolute; display:none; filter:alpha(opacity:20); opacity:0.2;}
    .show { width:100%; height:100%; background:red; position:absolute; z-index:10px; filter:alpha(opacity:10); opacity:0.1; left:0px; top:0px; }
    #div2 {width:304px; height:222px; position:relative; display:none; overflow:hidden; margin:0px auto 0px;}
    #img1 { position:absolute;}
    </style>
    <script type="text/javascript">
    window.onload=function ()
    {
        var oDiv=document.getElementById('div1');
        var oShow=oDiv.getElementsByTagName('div')[0];
        var oSpan=oDiv.getElementsByTagName('span')[0];
        var oImg=document.getElementById('img1');
        oShow.onmouseover=function()
        {
            oSpan.style.display='block';
            oImg.parentNode.style.display='block';
        };
        oShow.onmouseout=function()
        {
            oSpan.style.display='none';
            oImg.parentNode.style.display='none';
        };
        oShow.onmousemove=function(ev)
        {
            var oEvent=ev||event;
            var x=oEvent.clientX-oDiv.offsetLeft-oSpan.offsetWidth/2;
            var y=oEvent.clientY-oDiv.offsetTop-oSpan.offsetHeight/2;
            
            if(x<0)
            {
                x=0;
            }
            else if(x>oShow.offsetWidth-oSpan.offsetWidth)
            {
                x=oShow.offsetWidth-oSpan.offsetWidth;
            }
            if(y<0)
            {
                y=0;
            }
            else if(y>oShow.offsetHeight-oSpan.offsetHeight)
            {
                y=oShow.offsetHeight-oSpan.offsetHeight
            }
            oSpan.style.left=x+'px';
            oSpan.style.top=y+'px';
            var percentX=x/(oShow.offsetWidth-oSpan.offsetWidth);
            var percentY=y/(oShow.offsetHeight-oSpan.offsetHeight);
            var oImgparent=oImg.parentNode;
            oImg.style.left=-percentX*(oImg.offsetWidth-oImgparent.offsetWidth)+'px';
            oImg.style.top=-percentY*(oImg.offsetHeight-oImgparent.offsetHeight)+'px';
        };
    };
    </script>
    </head>
    <body>
    <div id="div1">
        <img src="http://www.codesc.net/jscode/demoimg/201102/11_2_2.jpg" />
        <span></span>
        <div class="show"></div>
    </div>
    <div id="div2">
        <img id="img1" src="http://www.codesc.net/jscode/demoimg/201102/11_2_2.jpg" />
    </div>
    </body>
    </html>

    -----------------------------------------------------------------------------------------------------------------------------感谢观看!期待您的下次光临!

  • 相关阅读:
    每天进步一小点
    C# 类
    XML JavaScript
    基础XML
    多态,重载,重写
    数据结构
    sql server规范
    .net core 使用TimeZoneInfo类的时间与时间戳转换
    git 重命名文件与文件夹
    IDEA spring boot 开启热加载
  • 原文地址:https://www.cnblogs.com/varchar-pig/p/14224281.html
Copyright © 2011-2022 走看看