看到网上有许多的朋友经常问购物商城图片的放大效果,正好的是,项目中也要用到这个效果,于是从网上搜了点代码,现在展示给大家看看。

  效果图展示: 

  代码展示:

  <!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 runat="server">
    <title>图片放大镜效果</title>
    <style type="text/css">
#div1 { width: 200px; height: 200px; padding: 5px; border: 1px solid #ccc; position: relative; }
#div1 .small_pic { width: 200px; height: 200px; background: #eee; position: relative; }
#div1 .float_layer { width: 100px; height: 100px; border: 1px solid #000; background: #fff; filter: alpha(opacity: 30); opacity: 0.3; position: absolute; top: 0; left: 0; display:none; }
#div1 .mark {width:100%; height:100%; position:absolute; z-index:2; left:0px; top:0px; background:red; filter:alpha(opacity:0); opacity:0;}
#div1 .big_pic { position: absolute; top: -1px; left: 215px; width:500px; height:500px; overflow:hidden; border:2px solid #CCC; display:none; }
#div1 .big_pic img { position:absolute; top: -30px; left: -80px; }
</style>
<script type="text/javascript">
    function getByClass(oParent, sClass) {
        var aEle = oParent.getElementsByTagName('*');
        var aTmp = [];
        var i = 0;

        for (i = 0; i < aEle.length; i++) {
            if (aEle[i].className == sClass) {
                aTmp.push(aEle[i]);
            }
        }

        return aTmp;
    }
    window.onload = function () {
        var oDiv = document.getElementById('div1');
        var oMark = getByClass(oDiv, 'mark')[0];
        var oFloat = getByClass(oDiv, 'float_layer')[0];
        var oBig = getByClass(oDiv, 'big_pic')[0];
        var oSmall = getByClass(oDiv, 'small_pic')[0];
        var oImg = oBig.getElementsByTagName('img')[0];

        oMark. = function () {
            oFloat.style.display = 'block';
            oBig.style.display = 'block';
        };

        oMark. = function () {
            oFloat.style.display = 'none';
            oBig.style.display = 'none';
        };

        oMark. = function (ev) {
            var oEvent = ev || event;

            var l = oEvent.clientX - oDiv.offsetLeft - oSmall.offsetLeft - oFloat.offsetWidth / 2;
            var t = oEvent.clientY - oDiv.offsetTop - oSmall.offsetTop - oFloat.offsetHeight / 2;

            if (l < 0) {
                l = 0;
            }
            else if (l > oMark.offsetWidth - oFloat.offsetWidth) {
                l = oMark.offsetWidth - oFloat.offsetWidth;
            }

            if (t < 0) {
                t = 0;
            }
            else if (t > oMark.offsetHeight - oFloat.offsetHeight) {
                t = oMark.offsetHeight - oFloat.offsetHeight;
            }

            oFloat.style.left = l + 'px';
            oFloat.style.top = t + 'px';

            var percentX = l / (oMark.offsetWidth - oFloat.offsetWidth);
            var percentY = t / (oMark.offsetHeight - oFloat.offsetHeight);

            oImg.style.left = -percentX * (oImg.offsetWidth - oBig.offsetWidth) + 'px';
            oImg.style.top = -percentY * (oImg.offsetHeight - oBig.offsetHeight) + 'px';
        };
    };
</script>
</head>
<body>
    <div id="div1">
    <div class="small_pic">
  <span class="mark"></span>
        <span class="float_layer"></span>
        <img src="Photos/small.png" alt="放大镜图片一" longdesc="http://www.miaov.com" />
    </div>
    <div class="big_pic">
  <img src="Photos/psb.jpeg" alt="放大镜图片二" longdesc="http://www.miaov.com" />
 </div>
</div>
</body>
</html>