动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   网页设计 → 阅读文章

 奇妙的Javascript图片放大镜

作者:无从考证 来源:天极网络 
阅读 2684 人次 , 2006-2-15 14:56:00 

在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;        
//该布尔值决定“放大镜”是否随鼠标移动,初始值为否<BR>
  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 -
arseInt(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>



  
 本文Tags组网  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:网页制作技巧24条
· 下一篇:JavaScript 实用的一些技巧
· css新手上路(2)
· dreamweaver制作可控制的横向滚动
· 页面载入时提示消息层
· 用javascript获得地址栏参数的两种方法
· Javascript实例教程(20-11)


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077