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