当前位置: 首页 > 图文教程 > 网络编程 > Javascript > 奇妙的Javascript图片放大镜

Javascript
我也种棵OO树JXTree[js+css+xml]
新浪中用来显示flash的函数
JXTree对象,读取外部xml文件数据,生成树的函数
用js来格式化字符串示例模仿css
js prototype 格式化数字 By shawl.qiu
新浪刚打开页面出来的全屏广告代码
记录几个javascript有关的小细节
Some tips of wmi scripting in jscript (1)
JavaScript Try...Catch 声明的 使用方法
JS版获取字符串真实长度和取固定长度的字符串函数
Javascript中的数学函数
ArrayList类(增强版)
javascript中巧用“闭包”实现程序的暂停执行功能
javascript判断单选框或复选框是否选中方法集锦
FireFox的getYear的注意事项
JavaScript For...In 使用方法
JavaScript Switch 声明
JavaScript If...Else 声明
JavaScript For 循环
JavaScript While 循环 教程

奇妙的Javascript图片放大镜


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-12   浏览: 450 ::
收藏到网摘: n/a

在Flash中我们用蒙板加上一些简单的脚本便可实现一个动态的图片放大镜。现在我们只用JavaScript结合CSS语言也可以轻易做出这个效果。
  制作思路:“放大镜”后有一幅背景图,它是“放大了”的图的原本。我们通过移动“放大镜”时适当调整背景图的位置,使它显示的刚好是需要要放大的部分。
  效果演示: (点这里在新窗口中查看)
  制作步骤
  1)先准备两幅内容相同尺寸不同的图片,这里我们找了一个400×300像素的缩略图small_hill.gif,一个800×600像素的大图big_hill.gif。然后再准备一个“放大镜”的图片,注意它中间部分必须是透明的,这里我们准备了一个绿色的方框 viewer.gif。
  2)编写如下的代码:
  以下是两幅图的代码,都它们作为层。第一幅是缩略图,第二幅是“放大镜”,首先将它的背景移到不可见的地方; 其中“ onclick="moveme=!moveme" ”表示每次点击它都改变“moveme”的布尔值。
<img src="small_hill.gif" id="bgLayer" style="position:absolute; left:150px; top:50px;">
<img src=
"viewer.gif" id="myviewer" onclick="moveme=!moveme" onmousemove="viewit(this)"
style=
"left:0;top:0;background-repeat:no-repeat; background-position:2000px 2000px;position:absolute;">

以下是JavaScript脚本:
<script language="JavaScript">
<!--
var viewer_bgcolor="#FFFFFF"; //放大镜的背景色,建议设成和网页背景色相同。
var bigmap="big_hill.gif"; //大图路径
document.all.myviewer.style.backgroundImage='url('+bigmap+')';
document.all.myviewer.style.backgroundColor=viewer_bgcolor;
//因为大图作为背景无法设定和读取它的尺寸,只好把它的一个副本作为实图,但不可见:
document.write('<img id="getsize" style="position:absolute; left:-2000px; top:-2000px;" src="'+bigmap+'">');
var moveme=false; //该布尔值决定“放大镜”是否随鼠标移动,初始值为否
function viewit(obj){
if (moveme){
//以下两行控制“放大镜”的移动:
obj.style.left=event.x+parseInt(document.body.scrollLeft)-parseInt(obj.width)/2;
obj.style.top=event.y+parseInt(document.body.scrollTop)-parseInt(obj.height)/2;
//以下几行调整当“放大镜”移动时其背景图的位置,使其中心移到缩略图的某点时,其背景图上相应的点也移动到其中心。
//其中Nx,Ny指大图宽和高分别是小图的几倍,bgx,bgy是背景图当移到的X,Y坐标。
Nx=parseInt(document.all.getsize.width)/parseInt(document.all.bgLayer.width);
bgx=(-1)*(Nx-1)*(event.x-parseInt(document.all.bgLayer.style.left)+parseInt(document.body.scrollLeft))-parseInt(obj.style.left)+parseInt(document.all.bgLayer.style.left);
Ny=parseInt(document.all.getsize.height)/parseInt(document.all.bgLayer.height);
bgy=(-1)*(Ny-1)*(event.y-parseInt(document.all.bgLayer.style.top)+parseInt(document.body.scrollTop))-parseInt(obj.style.top)+parseInt(document.all.bgLayer.style.top);
obj.style.backgroundPosition=bgx+" "+bgy;
}
}

//-->
</script>

点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]