Este efeito não é difícil. A chave é definir a posição e a proporção.
Capture a posição do mouse, determine a área de posição do mouse e evento onmouseover, evento onmousemove, evento onmouseout
Defina a proporção da imagem grande A proporção da imagem cortada exibida na imagem pequena deve ser precisa, de preferência 2 vezes ou 4 vezes.
Preste atenção principalmente na largura. A imagem m.jpg que tenho aqui é 1440X900....
Copie o código do código da seguinte forma:
<!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">
<cabeça>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Efeito de lupa</title>
<style type="texto/css">
*{margem:0;preenchimento:0;}
#smallimg{largura:360px;float:esquerda;posição:relativa;borda:1px vermelho sólido;}
#smallimg img{largura:360px;}
#bigimg{float:esquerda;largura:400px;altura:400px;margem esquerda:40px;borda:1px sólido #ccc;display:none;}
#showimg{largura:100px;altura:100px;fundo:#fff;cursor:mover;posição:absoluta;borda:1px sólido #666;opacidade:0,5;filtro:alfa(opacidade=50);display:none;}
</estilo>
</head>
<corpo>
<div id="smallimg">
<img src="jq/m.jpg"/>
<div id="showimg"></div>
</div>
<div id="bigimg"></div>
<script type="texto/javascript">
var $=function(id){return typeof id=="string"?document.getElementById(id):id}
var smallimg = $("smallimg");
var showimg = $("showimg");//Filtrar imagem
var bigimg = $("bigimg");
var small_url = smallimg.getElementsByTagName("img")[0].getAttribute("src");
var show_half = maxWidth = maxHeight = 0;
smallimg.onmouseover=função(){
showimg.style.display = "bloquear";
bigimg.style.display = "inline";
show_half = showimg.offsetHeight/2;
maxWidth = smallimg.clientWidth - showimg.offsetWidth;
maxHeight = smallimg.clientHeight - showimg.offsetHeight;
//As duas variáveis acima indicam a área onde o showimg pode estar ativo.
};
smallimg.onmousemove=função(e){
var e=window.event?window.event:e;
var num=bigimg.clientWidth/showimg.clientWidth;
var Top = e.clientY - smallimg.offsetTop - show_half;
var Esquerda = e.clientX - smallimg.offsetLeft - show_half;
//O método de cálculo para obter a posição atual movida são as coordenadas do mouse - as coordenadas do contêiner mais externo - a largura (altura) da caixa/2
Superior = Superior<0?0:Top>maxHeight?maxHeight:Top;
Esquerda = Esquerda<0?0:Esquerda>maxWidth?maxWidth:Esquerda;
showimg.style.top=Topo + "px";
showimg.style.left = Esquerda + "px";
bigimg.style.background = "url("+small_url+") -"+Esquerda*num+"px -"+Top*num+"px sem repetição";
};
smallimg.onmouseout=função(){
showimg.style.display="nenhum";
bigimg.style.background="";
bigimg.style.display="nenhum"
};
</script>
</body>
</html>