JS实现图片放大镜插件详解


Posted in Javascript onNovember 06, 2017

前  言

我们大家经常逛各种电商类的网站,商品的细节就需要用到放大镜,这个大家一定不陌生,今天我们就做一个图片放大镜的插件,来看看图片是如何被放大的……

先看一下我们要是实现的最终效果是怎么样的    

JS实现图片放大镜插件详解

看完效果,大家有思路了吗,没有的话,我们一起来看一下是如何实现的~

1实现思路

① 要实现指上后放大的效果,需要做三个div,一个用来放原图,另一个用来放放大效果的div,最后一个是鼠标指上后需要放大部分的div(这个div我们用p标签来代替)。

② 确定放大比例,最重要的一点,鼠标指上的div与放大效果的div,和原图与放大图的比例要相等。

③ 将鼠标指上后的放大效果显示出来。

2具体实现步骤

 首先,我们先来建三个div。

<div id="wrapper"> 
     <!--小图-->
    <div id="img_min"> 
       <!--图片-->
       <img src="img/11.png" alt="min"> 
       <!--跟随鼠标的白块-->
       <p id="mousebg"></p> 
     </div> 
   <!--大图-->
     <div id="img_max">
       <img id="img2_img" src="img/11.png" alt="max">
     </div> 
   </div>

我们HTML代码部分已经全部完成,接下来,我们用JS来实现功能:

给原图添加三个事件,分别是,鼠标进入,鼠标移动,鼠标移出。

当鼠标移入原图时,鼠标指上时的div和放大效果的div同时显示。

img1.onmouseover = function () { 
       //鼠标进入 
       img2.style.display = 'block'; 
       mousebg.style.display = 'block'; 
      
     }

鼠标移出事件:

img1.onmouseout = function () { 
       //鼠标离开 
       img2.style.display = 'none'; 
       mousebg.style.display = 'none'; 
     }

重点是当鼠标移动时,根据p标签与原图的位置,来显示大图需要放大的部分。

var _event = event||window.event;//兼容性处理 
var mouseX = _event.clientX - img1.offsetLeft; 
 //计算鼠标相对与小图的位置 
var mouseY = _event.clientY - img1.offsetTop;

在做位置分析时,需要考虑四种临界情况:

就是当鼠标从图片的上、下、左、右刚刚进入时,并且这个距离小于鼠标指上的div宽度的二分之一时,放大效果的div显示出来,并不移动。

//特殊情况处理,分别靠近四条边的时候 
 if(mouseX<mousebg.offsetWidth/2){ 
  mouseX = mousebg.offsetWidth/2; 
   } 
 if(mouseX>img1.offsetWidth-mousebg.offsetWidth/2){ 
  mouseX = img1.offsetWidth-mousebg.offsetWidth/2; 
   } 
 if(mouseY<mousebg.offsetHeight/2){ 
  mouseY = mousebg.offsetHeight/2; 
 } 
 if(mouseY>img1.offsetHeight-mousebg.offsetHeight/2){ 
  mouseY = img1.offsetHeight-mousebg.offsetHeight/2; 
 }

最后,计算大图的显示范围:

//计算大图的显示范围 
 img2_img.style.left = -mul*mouseX+img2.offsetWidth/2+"px"; 
 img2_img.style.top = -mul*mouseY+img2.offsetHeight/2+"px"; 
 //使鼠标在白块的中间 
mousebg.style.left = mouseX-mousebg.offsetWidth/2+"px"; 
mousebg.style.top = mouseY-mousebg.offsetHeight/2+"px";

这样,我们用JS实现图片放大镜的插件就全部完成了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 实现图片预加载(js操作 Image对象属性complete ,事件onload 异步加载图片)
Mar 25 Javascript
使用jQuery清空file文件域的解决方案
Apr 12 Javascript
js创建元素(节点)示例
Jan 02 Javascript
javascript得到当前页的来路即前一页地址的方法
Feb 18 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
Jun 10 Javascript
jQuery的事件委托实例分析
Jul 15 Javascript
javascript解析xml实现省市县三级联动的方法
Jul 25 Javascript
jquery常用函数与方法汇总
Sep 01 Javascript
AngularJS基础 ng-paste 指令简单示例
Aug 02 Javascript
深入理解JS继承和原型链的问题
Dec 17 Javascript
vue实现通讯录功能
Jul 14 Javascript
js实现随机8位验证码
Jul 24 Javascript
js定时器实现倒计时效果
Nov 05 #Javascript
Vuejs实现购物车功能
Nov 05 #Javascript
JavaScript实现音乐自动切换和轮播
Nov 05 #Javascript
vue+node+webpack环境搭建教程
Nov 05 #Javascript
JavaScript实现三级级联特效
Nov 05 #Javascript
angular中不同的组件间传值与通信的方法
Nov 04 #Javascript
详解使用React全家桶搭建一个后台管理系统
Nov 04 #Javascript
You might like
php出现web系统多域名登录失败的解决方法
2014/09/30 PHP
php删除左端与右端空格的方法
2014/11/29 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
2020/07/21 PHP
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
2016/12/12 PHP
PHP如何根据文件头检测文件类型实例代码
2018/10/14 PHP
学习YUI.Ext 第二天
2007/03/10 Javascript
Riot.js 快速的JavaScript单元测试框架
2009/11/09 Javascript
通过正则格式化url查询字符串实现代码
2012/12/28 Javascript
鼠标移动到图片名上,显示图片的简单实例
2013/07/14 Javascript
javascript实现页面内关键词高亮显示代码
2014/04/03 Javascript
js删除局部变量的实现方法
2016/06/25 Javascript
JS识别浏览器类型(电脑浏览器和手机浏览器)
2016/11/18 Javascript
jQuery实现别踩白块儿网页版小游戏
2017/01/18 Javascript
Angular限制input框输入金额(是小数的话只保留两位小数点)
2017/07/13 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
Python对文件操作知识汇总
2016/05/15 Python
python发送邮件实例分享
2017/07/28 Python
Python中的并发处理之asyncio包使用的详解
2018/04/03 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
Python中断多重循环的几种方式详解
2020/02/10 Python
Python tkinter实现简单加法计算器代码实例
2020/05/13 Python
python中append函数用法讲解
2020/12/11 Python
css3实现圆锥渐变conic-gradient效果
2020/02/12 HTML / CSS
英国街头品牌:Bee Inspired Clothing
2018/02/12 全球购物
2014端午节活动策划方案
2014/01/27 职场文书
深入开展党的群众路线教育实践活动方案
2014/02/04 职场文书
《在山的那边》教学反思
2014/02/23 职场文书
小学清明节活动方案
2014/03/08 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
二手车交易协议书标准版
2014/11/16 职场文书
2014年小学安全工作总结
2014/12/04 职场文书
处级干部考察材料
2014/12/24 职场文书
服务明星事迹材料
2014/12/29 职场文书
表扬信范文
2015/05/04 职场文书
七个非常实用的Python工具包总结
2021/06/15 Python