在Flash中我们用蒙板加上一些简单的脚本便可实现一个动态的图片放大镜。现在我们只用JavaScript结合CSS语言也可以轻易做出这个效果。 制作思路:“放大镜”后有一幅背景图,它是“放大了”的图的原本。我们通过移动“放大镜”时适当调整背景图的位置,使它显示的刚好是需要要放大的部分。 效果演示: (点这里在新窗口中查看) 制作步骤: 1)先准备两幅内容相同尺寸不同的图片,这里我们找了一个400×300像素的缩略图small_hill.gif,一个800×600像素的大图big_hill.gif。然后再准备一个“放大镜”的图片,注意它中间部分必须是透明的,这里我们准备了一个绿色的 《奇妙的Javascript图片放大镜》 在Web开发中,实现图片放大镜效果是一种常见的交互设计,它可以提升用户体验,让用户能够更清晰地查看图片细节。在Flash盛行的时代,我们常常使用Flash技术结合蒙版和简单脚本来实现这一效果。然而,随着技术的发展,现在我们可以通过JavaScript和CSS就能轻松创建动态的图片放大镜功能。 制作思路的关键在于,放大镜背后有一个与放大区域相同内容的背景图,通常是大图。当用户移动鼠标时,通过改变背景图的位置,使得背景图显示的恰好是用户鼠标下方需要放大的部分。这样,用户在鼠标悬停的地方就仿佛看到了被放大的图像。 制作步骤如下: 1. 准备素材:你需要两张内容相同但尺寸不同的图片,一张是缩略图,用于显示在页面上;另一张是大图,用于放大镜效果。例如,我们可以选择400×300像素的`small_hill.gif`作为缩略图,800×600像素的`big_hill.gif`作为大图。另外,还需要一个“放大镜”的图片,这个图片的中心部分应该是透明的,便于看到下面的背景图,比如一个绿色方框的`viewer.gif`。 2. HTML布局:将缩略图和放大镜图片作为绝对定位的层。缩略图设置好初始位置,放大镜图片设置初始背景位置不可见,并添加`onclick`和`onmousemove`事件监听器。 ```html <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;"> ``` 3. JavaScript实现:首先定义放大镜的背景色、大图路径等变量,然后将大图设置为放大镜的背景。为了获取大图的实际尺寸,我们需要在页面加载时创建一个不可见的图片元素(`<img id="getsize">`)。最后编写`viewit`函数来处理鼠标移动事件,计算并更新放大镜和背景图的位置。 ```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; // 计算并更新背景图位置 var Nx = parseInt(document.all.getsize.width) / parseInt(document.all.bgLayer.width); var 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); var Ny = parseInt(document.all.getsize.height) / parseInt(document.all.bgLayer.height); var bgy = (-1) * (Ny - 1) * (event.y - parseInt(document.all.bgLayer.style.top) + parseInt(document.body.scrollTop)) - parseInt(obj.style.top); document.all.bgLayer.style.backgroundPosition = bgx + "px " + bgy + "px"; } } ``` 这段JavaScript代码的核心在于`viewit`函数,它通过计算缩略图和大图之间的比例关系,以及当前鼠标位置相对于放大镜的位置,来实时更新背景图的`background-position`,从而达到放大镜的效果。 实现Javascript图片放大镜效果主要涉及到HTML布局、CSS样式和JavaScript事件处理。这种方法不仅适用于静态网页,还可以应用在响应式设计和动态网页中,为用户提供更加直观、生动的视觉体验。通过这种方式,开发者可以利用JavaScript的强大功能,创造出更多创新的交互效果,提升网站的吸引力和用户体验。
- 粉丝: 2
- 资源: 910
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- FeiQ.rar 局域网内通信服务软件
- 172.16.100.195
- 光储并网simulink仿真模型,直流微电网 光伏系统采用扰动观察法是实现mppt控制,储能可由单独蓄电池构成,也可由蓄电池和超级电容构成的混合储能系统,并采用lpf进行功率分配 并网采用pq控制
- python编写微信读取smart200plc的数据发送给微信联系人
- 光储并网VSG系统Matlab simulink仿真模型,附参考文献 系统前级直流部分包括光伏阵列、变器、储能系统和双向dcdc变器,后级交流子系统包括逆变器LC滤波器,交流负载 光储并网VSG系
- file_241223_024438_84523.pdf
- 质子交膜燃料电池PEMFC Matlab simulink滑模控制模型,过氧比控制,温度控制,阴,阳极气压控制
- IMG20241223015444.jpg
- 模块化多电平变器(MMC),本模型为三相MMC整流器 控制策略:双闭环控制、桥臂电压均衡控制、模块电压均衡控制、环流抑制控制策略、载波移相调制,可供参考学习使用,默认发2020b版本及以上
- Delphi 12 控件之FlashAV FFMPEG VCL Player For Delphi v7.0 for D10-D11 Full Source.7z