先来张效果图:
这个特效是跟着慕课网上的视频学的,视频链接如下:https://www.imooc.com/learn/32
源码和技术点已经上传到附件,有需要的可以查看、下载。
下面直接上代码(PS:代码中的注释是根据个人理解添加的,并不是老师原有的注释):
页面结构:
<div id="demo"> <!--左侧小图片区域--> <div id="small-box"> <div id="mark"></div><!--左侧可以点击区域,类似于遮罩层,让鼠标一直在这个区域上移动。--> <div id="float-box"></div><!--左侧放大镜区域--> <img src="macbook-small.jpg"/> </div> <!--右侧大图片区域--> <div id="big-box"> <img src="macbook-big.jpg"/> </div> </div>
CSS样式:
<style> * { margin: 0; padding: 0 } #demo { display: block; width: 400px; height: 255px; margin: 50px; position: relative; border: 1px solid #ccc; } #small-box { position: relative; z-index: 1; } #float-box { display: none; width: 160px; height: 120px; position: absolute; background: #ffffcc; border: 1px solid #ccc; filter: alpha(opacity=50); opacity: 0.5; } #mark { position: absolute; display: block; width: 400px; height: 255px; background-color: #fff; filter: alpha(opacity=0); opacity: 0; z-index: 10; cursor:move; } #big-box { display: none; position: absolute; top: 0; left: 460px; width: 400px; height: 300px; overflow: hidden; border: 1px solid #ccc; z-index: 1;; } #big-box img { position: absolute; z-index: 5 } </style>
JS代码:
window.onload=function(){ var demoObj = document.getElementById("demo");//整个div所在对象 var smallBoxObj = document.getElementById("small-box");//左侧小图片区域 var markObj = document.getElementById("mark");//左侧可以点击区域 var floatBoxObj = document.getElementById("float-box");//左侧放大镜区域 var bigBoxObj = document.getElementById("big-box");//右侧大图片区域 var bigBoxImageObj = bigBoxObj.getElementsByTagName("img")[0]; //当鼠标进入到mark区域时,放大镜显示,大图片区域显示 markObj.onmouseover=function(){ floatBoxObj.style.display="block"; bigBoxObj.style.display="block"; }; //当鼠标离开mark区域时,放大镜隐藏,大图片区域也隐藏 markObj.onmouseout = function(){ floatBoxObj.style.display="none"; //bigBoxObj.style.display="none"; }; //当鼠标在mark区域移动时,放大镜和大图片区域根据鼠标的移动而移动 markObj.onmousemove = function(ev){ //1、先计算放大镜的移动情况 var _event = ev || window.event; /*使用这种写法,鼠标图标一直在放大镜区域的左上角,不太美观,所以改成让其在放大镜区域的中间显示,也就是offsetWidth、offsetHeight的一半 var left = _event.clientX - demoObj.offsetLeft - smallBoxObj.offsetLeft; var top = _event.clientY - demoObj.offsetTop - smallBoxObj.offsetTop; */ var left = _event.clientX - demoObj.offsetLeft - smallBoxObj.offsetLeft - floatBoxObj.offsetWidth/2; var top = _event.clientY - demoObj.offsetTop - smallBoxObj.offsetTop - floatBoxObj.offsetHeight/2; //1.1解决放大镜出界问题:离开smallBox所在区域 //左侧出界:左侧边界的offsetLeft(_event.clientX - demoObj.offsetLeft - smallBoxObj.offsetLeft)比放大镜的offsetWidth/2还小时,为了满足“鼠标一直在中间显示”,此时放大镜将超出边界显示,此时让其left为0,与左侧边界重合 //右侧出界:floatBoxObj必须markObj所在区域之内显示,当floatBoxObj的右侧不在markObj区域内时,右侧将出界,那么left应该是markObj的宽度与floatBoxObj宽度之差(在markObj或smallBoxObj的区域之内都可以,只要不超出这个区域的边界即可,因为左侧是在markObj上面移动,所以这里用markObj) if(left<0){ left=0; }else if(left>(markObj.offsetWidth-floatBoxObj.offsetWidth)){ //console.log("333333333333"); left = markObj.offsetWidth-floatBoxObj.offsetWidth; } //同理解决高度出界的问题 if(top<0){top=0;} else if(top>(markObj.offsetHeight-floatBoxObj.offsetHeight)){ top = markObj.offsetHeight-floatBoxObj.offsetHeight; } //console.log("left="+left+"\ttop="+top); //放大镜区域所在位置 floatBoxObj.style.left = left+"px"; floatBoxObj.style.top = top+"px"; //2、在大图片区域显示图片 //(????计算方法没太懂) var percentX = left / (markObj.offsetWidth - floatBoxObj.offsetWidth); var percentY = top / (markObj.offsetHeight - floatBoxObj.offsetHeight); bigBoxImageObj.style.left = -percentX * (bigBoxImageObj.offsetWidth - bigBoxObj.offsetWidth) + "px"; bigBoxImageObj.style.top = -percentY * (bigBoxImageObj.offsetHeight - bigBoxObj.offsetHeight) + "px"; }; };
在大图上显示那块儿没太懂,学习视频里面讲的也没看懂,有看懂的还望告知,谢谢!
相关推荐
**纯JS图片放大镜特效封装插件**是一种利用JavaScript实现的网页交互效果,它允许用户在鼠标悬停在图片上时,看到图片的局部放大视图,为用户提供更清晰的产品细节展示,常见于电商网站的商品图片展示。这种效果通常...
在提供的压缩包文件中,`index.html`很可能是包含HTML结构和JavaScript代码的网页文件,`images`目录存放了图片资源,而`js`目录可能包含实现放大镜特效的JavaScript文件。通过分析这些文件,可以进一步了解具体实现...
在提供的压缩包文件"js图片放大镜特效代码.wps"中,你可以找到实现这些功能的具体代码。通过阅读和理解代码,新手和有基础的开发者都能进一步提升JavaScript和Web交互设计的能力。同时,这样的实践项目也是提高编程...
这种放大镜特效通常由JavaScript(JS)编写,它是一种广泛使用的客户端脚本语言,负责在用户浏览器端处理动态交互。在"JS特效-图片相册"这个标签中,我们可以理解到这个特效不仅局限于单一的图片放大,还可能涉及到...
"js特效窗口图片切换+放大镜"是一个典型的JavaScript实现的网页交互效果,它涉及到多个关键的技术点,包括图片的动态切换、滤镜应用、放大镜功能以及指定图片的点击跳转。下面我们将详细探讨这些知识点。 首先,**...
"js圆形放大镜网页特效"就是一种常见的技术,它允许用户在鼠标悬停在某个产品图片上时,出现一个圆形的放大区域,使得用户可以更清晰地查看产品的细节。这种效果在电子商务网站中尤其常见,用于展示商品的细节。 ...
在这个"各种js的放大镜特效"主题中,我们聚焦于如何利用JavaScript、HTML和jQuery来实现图片的放大镜效果,这是一种常见的增强用户体验的功能,特别是对于在线商品展示或图像细节查看。 1. **JavaScript基础**:...
首先,我们来看看“放大镜特效”的技术实现。通常,这个功能是基于JavaScript和CSS3构建的。JavaScript用于监听用户的鼠标移动事件,当鼠标在图片上移动时,触发放大效果。CSS3则用来创建透明的“放大镜”层,该层...
jQuery球状放大镜特效插件是一种创新的实现方式,它为用户提供了3D视觉效果,增强了用户体验。这款插件基于流行的JavaScript库jQuery构建,并结合了HTML5的技术优势,使得网页的图像展示更加生动和吸引人。 首先,...
这个“js仿京东主图放大镜特效.zip”压缩包包含了一个实现这种效果的代码实例,适合开发者参考和使用。下面将详细介绍这个特效的实现原理和涉及的技术。 首先,这个特效的核心是利用JavaScript(可能是jQuery库)和...
"简单的jquery放大镜特效"是一个基于jQuery实现的网页元素放大功能,常见于电商网站的产品展示,让用户能更清晰地查看产品细节。这个功能通过鼠标悬停在图片上时,出现一个放大的浮动视窗来实现。 首先,我们要理解...
"jQuery图片局部放大镜特效"是利用JavaScript库jQuery实现的一种高效、便捷的交互效果。在本案例中,我们将深入探讨这个主题,包括jQuery的基础知识,图片放大镜的原理,以及如何使用jQuery来实现这样的特效。 首先...
首先,我们来看"js实现图片放大镜效果"这一主题。这个功能通常涉及到JavaScript的事件监听、DOM操作以及图片处理。在给定的资源中,我们有一个名为`mz-packed.js`的文件,这很可能是封装好的jQuery插件,用于实现...
基于ArcGIS api上实现地图操作特效,包括透镜、放大镜、卷帘功能 阅读源码快速了解实现思路 有问题q-q-541247221
本文将详细探讨如何使用JS实现HTML中的放大镜特效。 首先,我们要理解放大镜效果的基本原理。这个效果通常由两个部分组成:一个是原始图片,另一个是放大部分。当鼠标在原始图片上移动时,放大部分会显示一个放大的...
`js` 文件夹包含了JavaScript代码,这些代码实现了放大镜特效。主要的JavaScript文件可能是 `cloud-zoom.js` 或者类似的名称,它实现了jQuery插件的逻辑。这个插件通常监听用户的鼠标移动事件,动态调整放大镜区域的...
淘宝的放大镜特效是一种常见的网页交互设计,常用于电商网站的商品展示,使用户能更清晰地查看商品细节。这个特效通常结合JavaScript、jQuery和CSS三种技术实现,为用户提供了一个直观的视觉体验。下面将详细解释...
在本文中,我们将深入探讨实现商品放大镜特效的技术细节,以及相关的文件资源。 一、技术原理 商品放大镜特效通常基于JavaScript库,如jQuery,配合CSS样式和HTML结构来完成。jQuery是一个轻量级、高性能的...
文件名称列表中只有一个"图片放大镜特效集合",这可能意味着压缩包包含不同实现方式的代码文件,如独立的JavaScript文件、CSS文件或预编译后的资源。理解这些文件的组织结构有助于开发者快速集成和自定义特效。 8....