[原创]========一个JavaScript放大镜的特效=============

wujinjian2008n 2009-09-27 11:21:55
加精
朋友让我帮他写一个放大镜特效,写好了也给大家分享一下。

在 IE6,7,火狐,谷歌 浏览器上测试都通过。

////////////////////////////////////////////////////////////////////////////////


<!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">
<html>
<head>
<title>wujinjian</title>
<base href="http://i3.6.cn/cvbnm/34/d2/48/">
<script type="text/javascript">

/*
*特别注意:
*放大的倍数=原图的大小/小图片显示的大小
*自己查看原图片的大小,我这是 400*400 px
*/

//图片对象
var imgObj;
//放大镜div对象
var zoomDivObj;
//显示小图片的div
var mainDivObj;
//放大后显示图片的div
var showDivObj;
//放大镜的大小
var zoomSize=50;
//放大镜的倍数(不能随便填)
var zoomMultiple=2;
//图片的路径
var imgPath="7d0fe1b65e1389c46045cd2d0e43a041.gif";
//小图片显示的大小
var imgW=200;
var imgH=200;
//显示的位置
var left=100;
var top=10;
//放大镜div的透明度(0~100)
var opacity=50;
//放大镜div的颜色
var rgb="223,223,223";

function load()
{
if(zoomDivObj==null)
createZoomDivObj();
if(mainDivObj==null)
createMainDivObj();
if(showDivObj==null)
createShowDivObj();
if(imgObj==null)
createImgObj();

zoomDivObj.style.width=zoomSize+"px";
zoomDivObj.style.height=zoomSize+"px";

showDivObj.style.width=zoomSize*zoomMultiple+"px";
showDivObj.style.height=zoomSize*zoomMultiple+"px";

showDivObj.style.backgroundImage="url("+imgPath+")";

imgObj.src=imgPath;
imgObj.style.width=imgW+"px";
imgObj.style.height=imgH+"px";

mainDivObj.style.width=imgW+"px";
mainDivObj.style.height=imgH+"px";
mainDivObj.style.left=left+"px";
mainDivObj.style.top=top+"px";

showDivObj.style.left=left+imgW+50+"px";
showDivObj.style.top=top+"px";

zoomDivObj.style.backgroundColor="rgb("+rgb+")";

//两个都要写,为了IE 和 火狐 的通用
zoomDivObj.style.filter="alpha(opacity="+opacity+")";
zoomDivObj.style.opacity=opacity/100;
}

function showZoomDiv()
{
if(zoomDivObj==null)
createZoomDivObj();

zoomDivObj.style.visibility="visible";
}

function moveZoomDiv(e)
{
if(zoomDivObj==null)
createZoomDivObj();

var w=zoomDivObj.style.width.replace("px","")-0;
var h=zoomDivObj.style.height.replace("px","")-0;

if(mainDivObj==null)
createMainDivObj();

var mouseX=e.clientX-(mainDivObj.style.left.replace("px","")-0);
var mouseY=e.clientY-(mainDivObj.style.top.replace("px","")-0);

window.status=mouseX+" "+mouseY;

zoomDivObj.style.left=mouseX-(w/2)+"px";
zoomDivObj.style.top=mouseY-(h/2)+"px";

if(showDivObj==null)
createShowDivObj();

showDivObj.style.backgroundPosition=(-mouseX+w/2)*zoomMultiple+"px "+(-mouseY+h/2)*zoomMultiple+"px";
}

function hiddenZoomDiv()
{
if(zoomDivObj==null)
createZoomDivObj();

//zoomDivObj.style.visibility="hidden";
}

function createZoomDivObj()
{
zoomDivObj=document.getElementById("zoom_div_id");
}

function createMainDivObj()
{
mainDivObj=document.getElementById("main_div_id");
}

function createShowDivObj()
{
showDivObj=document.getElementById("show_div_id");
}

function createImgObj()
{
imgObj=document.getElementById("img_id");
}
</script>
</head>
<body onmousemove="moveZoomDiv(event)" onload="load()">
<div id="main_div_id" style="position:absolute;overflow:hidden;background-color:cyan;border:gray solid 1px;" onmouseover="showZoomDiv()" onmouseout="hiddenZoomDiv()" >
<img id="img_id">

<div id="zoom_div_id" style="position:absolute;left:0px;top:0px;overflow:hidden;visibility:hidden;"></div>
</div>

<div id="show_div_id" style="position:absolute;overflow:hidden;background-color:cyan;background-repeat:no-repeat;border:gray solid 1px;" ></div>
</body>
</html>
...全文
2141 190 打赏 收藏 转发到动态 举报
写回复
用AI写文章
190 条回复
切换为时间正序
请发表友善的回复…
发表回复
paul烂熊 2011-08-09
  • 打赏
  • 举报
回复
IE显示不出图片的
yksyuan 2011-06-21
  • 打赏
  • 举报
回复
谢谢。呵呵 我新手。学习下
langlang520huahua 2011-05-25
  • 打赏
  • 举报
回复
先顶再看!是我要找的
蕾丝凶兆 2011-05-24
  • 打赏
  • 举报
回复
谢谢~~~~正好需要~~~~~~~~~~~~~~~
该用户已注销 2010-05-15
  • 打赏
  • 举报
回复
谢谢LZ分享!
tjw88560899 2010-05-12
  • 打赏
  • 举报
回复
多谢分享
「已注销」 2010-05-12
  • 打赏
  • 举报
回复
收藏了
shaluo520 2010-04-16
  • 打赏
  • 举报
回复
谢谢分享~
bujing18 2010-04-08
  • 打赏
  • 举报
回复
留名。学习
46539492 2009-10-11
  • 打赏
  • 举报
回复
简单,不过效果还行,支持!
baoxuetianxia 2009-10-11
  • 打赏
  • 举报
回复
mark
saishangpeiqian 2009-10-11
  • 打赏
  • 举报
回复
不错 好人
森之树 2009-10-11
  • 打赏
  • 举报
回复
谢谢LZ分享
mzjmicrosoft 2009-10-11
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
回帖有10分
laden007 2009-10-06
  • 打赏
  • 举报
回复
顶。。收藏。。
wujinjian2008n 2009-10-05
  • 打赏
  • 举报
回复
[Quote=引用 171 楼 qq196260188 的回复:]
不是原创的吧,,google一搜一大堆,,我上次也用过这个代码
[/Quote]

绝对是我自己写的
lu_huanling 2009-09-30
  • 打赏
  • 举报
回复
thanks 已經保存
Code従業員 2009-09-30
  • 打赏
  • 举报
回复
收藏,呵呵,多谢分享。
tiger_ok1 2009-09-30
  • 打赏
  • 举报
回复
不顶不行..........
加载更多回复(166)

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧