分享原生js代码实现图片放大境效果
2016-11-02 13:34
330 查看
<p>今天我给大家分享一下自己用js写的一个图片放大器效果,我在内涵图网<a target=_blank href="http://www.neipic.com">www.neipic.com</a>做了两种效果的放大,其实它们的原理都差不多,都是采用了两张图片给两张图片设定相应的尺寸,最后显示在不同位置,最终实现放大效果。 </p><p>第一种是我仿照淘宝购物页面的一个放大镜效果,当鼠标移动到商品图片上时,图片上会出现一个矩形区域,而这个区域就是你要放大的区域,然后商品图片的右侧会出现一个放大后的商品图片。这种放大方式只需要你计算好放大的比例,然后通过修改放大区域的scrollLeft和scrollTop值实现相应的放大效果。</p>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>图片放大器</title> <style media="screen"> *{ margin: 0; padding: 0; } /*可视区域的父级标签*/ .wrap{ width: 400px; height:auto; border: 1px solid black; display: inline-block; position: absolute; left: 0; top: 0; } .wrap>img{ width: 100%; height: auto; } /*锁定放大的矩形区域*/ .box{ border: 1px solid black; width: 100px; height: 100px; background: rgba(0, 0, 0, 0.5); opacity: 0.8; position: absolute; cursor: pointer; display: none; } /*要显示放大图片的父级*/ .main{ width: 700px; height: 700px; margin-left: 420px; overflow:hidden; display:none; position: absolute; top: 0; } .main>img{ width:2800px; height:auto; } </style> </head> <body> <div class="wrap"> <img src="dog.jpg" alt="" /> <div class="box"></div> </div> <div class="main"> <img src="dog.jpg"alt="" /> </div> <script type="text/javascript"> //获取四个对象 var wrap=document.querySelector('.wrap'); var box=document.querySelector('.box'); var main=document.querySelector('.main'); var mainImg=document.querySelector('.main img'); //添加移动事件 wrap.onmousemove=function(){ //鼠标移入可视图片后出现 锁定放大区域及放大图片 box.style.display='block'; main.style.display='block'; var event=window.event || event; //获取鼠标距离可视区域边缘的偏移量 var disx=event.clientX-box.offsetWidth/2; var disy=event.clientY-box.offsetHeight/2; //矩形区域的最大可移动范围 var distanceMaxX=wrap.offsetWidth-box.offsetWidth; var distanceMaxY=wrap.offsetHeight-box.offsetHeight; // 判断让锁定放大的矩形区域不能出框 if (disx<=0) { disx=0; } if (disy<=0) { disy=0; } if(disx>=distanceMaxX) { disx=distanceMaxX; } if(disy>=distanceMaxY) 91d7 { disy=distanceMaxY; } box.style.left=disx+'px'; box.style.top=disy+'px'; //获取放大比例 var scalex=box.offsetLeft/distanceMaxX; var scaley=box.offsetTop/distanceMaxY; main.scrollLeft=(mainImg.clientWidth-main.clientWidth)*scalex; main.scrollTop=(mainImg.clientHeight-main.clientHeight)*scaley; } //添加移出事件 wrap.onmouseout=function(){ box.style.display='none'; main.style.display='none'; } </script> </body> </html>
效果预览:
相关文章推荐
- 原生js代码实现图片放大境效果
- 原生js代码实现图片放大境效果
- 原生js代码实现图片放大境效果
- 原生js实现图片放大缩小计时器效果
- 原生javascript实现图片轮播效果代码
- 实现点击图片图片放大效果(续)
- Asp.net使用JQuery实现放大图片效果
- 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
- 分享一个HTML5的drag and drop API实现的图片拖拽分组效果
- 鼠标滑上去后图片放大浮出效果的实现
- 分享超简单实用的用JS实现DIV、图片圆角效果,关键是很兼容
- 图片的局部放大的效果实现
- js实现图片的放大效果
- JQuery实现图片放大的动态菜单效果
- 分享一个HTML5的drag and drop API实现的图片拖拽分组效果
- JavaScript + CSS 实现图片放大预览效果
- jquery与jQzoom实现图片放大效果
- jquery 实现京东商城、凡客商城的图片放大效果
- jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
- 利用JS实现图片放大效果