Posted in Javascript onDecember 09, 2013
这个效果并不难,要点是位置和比例设置,
捕获鼠标位置、判断鼠标位置区域、还有onmouseover事件、onmousemove事件、onmouseout事件
设置显示大图的比例,小图上显示的切图比例都要弄准确点,最好是2倍啦,4倍啦。
主要注意宽度,我这里的图片m.jpg是1440X900的....
<!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> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>放大镜效果</title> <style type="text/css"> *{margin:0;padding:0;} #smallimg{width:360px;float:left;position:relative;border:1px solid red;} #smallimg img{ width:360px;} #bigimg{float:left;width:400px;height:400px;margin-left:40px;border:1px solid #ccc;display:none;} #showimg{width:100px;height:100px;background:#fff;cursor:move; position:absolute;border:1px solid #666;opacity:0.5;filter:alpha(opacity=50);display:none;} </style> </head> <body> <div id="smallimg"> <img src="jq/m.jpg" alt=""/> <div id="showimg"> </div> </div> <div id="bigimg"> </div> <script type="text/javascript"> var $=function(id){return typeof id=="string"?document.getElementById(id):id} var smallimg = $("smallimg"); var showimg = $("showimg");//滤镜图片 var bigimg = $("bigimg"); var small_url = smallimg.getElementsByTagName("img")[0].getAttribute("src"); var show_half = maxWidth = maxHeight = 0; smallimg.onmouseover = function(){ showimg.style.display = "block"; bigimg.style.display = "inline"; show_half = showimg.offsetHeight/2; maxWidth = smallimg.clientWidth - showimg.offsetWidth; maxHeight = smallimg.clientHeight - showimg.offsetHeight; //上面两个变量指明showimg允许活动的区域 }; smallimg.onmousemove = function(e){ var e=window.event?window.event:e; var num=bigimg.clientWidth/showimg.clientWidth; var Top = e.clientY - smallimg.offsetTop - show_half; var Left = e.clientX - smallimg.offsetLeft - show_half; //获取当前移动的showimg位置 计算方法是 鼠标坐标 - 最外面容器的坐标 - 盒子的宽(高)的/2 Top = Top<0?0:Top>maxHeight?maxHeight:Top; Left = Left<0?0:Left>maxWidth?maxWidth:Left; showimg.style.top = Top + "px"; showimg.style.left = Left + "px"; bigimg.style.background = "url("+small_url+") -"+Left*num+"px -"+Top*num+"px no-repeat"; }; smallimg.onmouseout = function(){ showimg.style.display="none"; bigimg.style.background =""; bigimg.style.display="none" }; </script> </body> </html>
javascript放大镜效果的简单实现
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@