放大镜
2016-09-20 18:06
260 查看
<!DOCTYPE html> <html lang="en"> <head> <!--首先要把HTML结构和样式写好,这里大家肯定都明白,不作具体解释--> <!--所谓的放大镜其实也是一个假象,即它是2张图片而已, 基本思路: 小图片我们给他写好样式,大图片我们让他在小图片的右侧隐藏,一旦镜子(鼠标)进入小图片,大图片出现 并且能够在相应位置放大,例子中我们的大图片尺寸就是小图片尺寸的3倍,实际工作也是如此--> <meta charset="UTF-8"> <title>放大镜</title> <style> html,body,div,img { margin: 0; padding: 0; font-family: "微软雅黑"; -webkit-user-select: none; } img { border: none; display: block; } #box1,#box2 { position: absolute; width: 300px; height: 300px; top: 50px; box-shadow: 4px 4px 10px 3px darkblue; } #mark { display: none; position: absolute; width: 100px; height: 100px; top:0; left: 0; background-color: silver; opacity: 0.7; filter: alpha(opacity=70); cursor: move; border-radius:50% ; } #box1 { left: 60px; } #box2 { display: none; left: 380px; overflow: hidden; border-radius: 50%; } #box1 img { width: 100%; height: 100%; } #box2 img { width: 300%; height: 300%; } </style> </head> <body> <div id="box1"> <!--这是小图--> <img src="img/iphone.jpg" alt=""> <!--这个mark就是鼠标位置,也就是进入图片的时候那个镜子--> <div id="mark"></div> </div> <div id="box2"> <!--这个是大图--> <img src="img/iphone_big.jpg" alt=""> </div> <script src="js/utils.js"></script> <script> //首先我们要获取元素 var box1=document.getElementById("box1"); var mark=document.getElementById("mark"); var box2=document.getElementById("box2"); var oImg=box2.getElementsByTagName("img")[0]; //封装一个函数,实现放大镜效果 function bigImg(e) { //首先我们要去判断事件源,也就是e e=e||window.event; //我们要获取这个小图片所在的元素距离body的距离,也就是一个left 和top值 //---------->其中utils是我自己封装的函数 //因为我们要实现鼠标进入这个小图片的时候再出现镜子,不进入就不会出现, // 所以就要进行判断,也就是要求出它距离body的最大值最小值. //下面的 l t 就是它的最小值 var box1Offent=utils.offset(box1); //client 是距离浏览器边框(可视区域)的距离 //这里的offsetWidth就是这个mark(镜子)的宽度,同理offsetHeight就是高度. //这里为什么除以2那?是因为我们不除以2的话,事件源也就是鼠标就在这个镜子的左上角,并不美观 //我们要让他在镜子的中心,所以宽高各减去一半,这样我们的鼠标就会在mark的中间了 var l=e.clientX-box1Offent.left-mark.offsetWidth/2; var t=e.clientY-box1Offent.top-mark.offsetHeight/2; utils.css(mark,{left:l,top:t}); //边界判断 //最小的我们知道了,那么最大的就是用镜子父元素的宽高减去镜子的宽高. //大家仔细想想是不是这么个道理?? var minL=0,minT=0; var maxL=box1.offsetWidth-mark.offsetWidth; var maxT=box1.offsetHeight-mark.offsetHeight; //然后我们对镜子的边界进行判断,同时得到l t 以后将他赋给大图片; //注意大图片的值 这时候要是他的3倍(因为我们前面说了,大图是小图的3倍) l=l<=minL?l=minL:(l>=maxL?maxL:l); t=t<=minT?t=minT:(t>=maxT?maxT:t); utils.css(mark,{left:l,top:t}); utils.css(oImg,{marginLeft:l*-3,marginTop:t*-3}); } //给镜子的父元素绑定事件,同时这里也可以利用JQ去写会更方便 box1.onmouseenter=function (e) { utils.css(mark,{display:"block"}); utils.css(box2,"display","block"); bigImg(e); }; box1.onmousemove=function (e) { utils.css(mark,{display:"block"}); utils.css(box2,"display","block"); bigImg(e); }; box1.onmouseleave=function (e) { utils.css(mark,{display:"none"}); utils.css(box2,"display","none"); }; </script> </body> </html>
相关文章推荐
- 仿京东商城商品图片 缩略图+放大镜效果
- jQuery放大镜插件 Cloud Zoom
- jquery之放大镜--JQZoom
- Jquery图片放大镜效果
- 图片放大镜-Cloud Zoom
- Android放大镜的实现
- jQuery实现放大镜效果
- jquery放大镜
- javascript放大镜效果的简单实现
- uisearchbar中自定义 放大镜图标 placeolder字体颜色 文本框背景色 兼容ios7
- [转]jquery 鼠标放在图片上显示图片的放大镜效果jqzoom_ev-2.3
- webview乱码 自动适应屏幕 当滑动时出现放大镜控件 webview小窍门
- java 图像特效之放大镜与哈哈镜
- WPF 放大镜
- 商品放大镜效果
- 提供的一个好用放大镜插件,基于juqery,非原创。
- 照着别人的demo自己试着做了个放大镜效果
- Win7关闭放大镜自启功能不让其自启动
- android放大镜效果实现
- C#软件开发实例.私人订制自己的屏幕截图工具(七)添加放大镜的功能