实用的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>

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

原文地址:https://www.cnblogs.com/varchar-pig/p/14224281.html