js图片放大镜实例讲解(必看篇)


Posted in Javascript onJuly 17, 2017

1、图片放大镜的思路:

当打开页面时只有图片

首先,说一下基本效果和调理,图片放大镜,也就是当你鼠标移入当前的商品图片时,会出现一个小灰色的观察移动框,有点会出现一个对应部位的放大的图片。

然后当鼠标移动时,右边的放大镜会出现对应部位的放大图片

最后当鼠标移开后,小的观察框和放大的图片都会消失。

2、有了基本思路就看代码

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
      #small{
        width: 300px;
        height: 300px;
        border: 1px solid firebrick;
        float: left;
        position: relative;
      }
      #small img{
        width: 100%;
        height: 100%;
         
      }
      #mask{
        width: 100px;
        height: 100px;
        background: rgba(0,0,0,0.3);
        position: absolute;
        top: 0;
        left: 0;
        display: none;
      }
      #big{
        width: 300px;
        height: 300px;
        border: 1px solid hotpink;
        overflow: hidden;
        float: left;
        margin-left: 50px;
        position: relative;
        display: none;
      }
      #big img{
        position: absolute;
      }
    </style>
    <script type="text/javascript">
      window.onload = function(){
//       获取到所有的元素,因为有对应元素的移动,所以在设置样式的,一定要给对应的元素绝对定位,类似于拖拽
        var oSmall = document.getElementById('small'),
        oMask = document.getElementById('mask'),
        oBig = document.getElementById('big'),
        oBigImg = document.getElementById('bigImg');
        //给当前小的div一个鼠标移入事件
        oSmall.onmouseover = function(){
//         当鼠标移入时,对应的区域显示 小的观察框,和 对应的右面的放大图片
          oMask.style.display = 'block';
          oBig.style.display = 'block';
        };
        oSmall.onmouseout = function(){
//         当鼠标移除时对应的区域隐藏
          oMask.style.display = 'none';
          oBig.style.display = 'none'
        }
        oSmall.onmousemove = function(ev){
//         首先获取到event事件
          var oEvent = ev || event;
//         offsetWidth = 本身的样式宽 + 左右padding + 左右border
//         clientX clientY 获取鼠标指针位置,相对于当前窗口的 X 和 Y 坐标
           
//         鼠标距离当前窗口左边的距离 了l ,就为当前鼠标距离窗口左边的距离 减去 小的观察框的宽度
//             oMask.offsetWidth / 2 设置鼠标处于正中心的位置
          var l = oEvent.clientX - oMask.offsetWidth / 2;
          var t = oEvent.clientY - oMask.offsetHeight / 2;
           
//         对观察框距离的限制, 1.当它距离左边的距离比0 小的时候,设置它为0 就是它移动到最左边的时候
          if (l < 0) {
            l = 0;
          }else if(l > oSmall.offsetWidth - oMask.offsetWidth){
//           当它移动到最右边的时候,设置它的left值为 当前的left值
            l = oSmall.offsetWidth - oMask.offsetWidth;
          };
           
          //同理对上下边界进行设置
          if (t < 0) {
            t = 0;
          }else if(t > oSmall.offsetHeight - oMask.offsetHeight){
            t = oSmall.offsetHeight - oMask.offsetHeight;
          };
 
//         设置小的观察框的移动时的当前位置
          oMask.style.left = l + 'px';
          oMask.style.top = t + 'px';
           
//         设置对应的右边放大图片对应的位置
          //var scale = l / (oSmall.offsetWidth - oMask.offsetWidth);
//         大的可视区域的宽减去小的观察框对应的宽,就是可移动的总距离,  当前处的位置,处于总的距离的比例 与大图片,在大图片的可视框里所处的位置相同所以如下
          oBigImg.style.left = l * (oBig.offsetWidth - oBigImg.offsetWidth)/(oSmall.offsetWidth-oMask.offsetWidth)+"px";
          oBigImg.style.top = t * (oBig.offsetHeight - oBigImg.offsetHeight)/(oSmall.offsetHeight-oMask.offsetHeight)+"px";
           
        }
      }
    </script>
  </head>
  <body>
    <div id="small">
      <img src="img/s.jpg" />
      <spanS id="mask"></span>
    </div>
    <div id="big">
      <img src="img/b.jpg" id="bigImg"/>
    </div>
  </body>
</html>

还有什么更好的方法互相交流

以上这篇js图片放大镜实例讲解(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript实现上传图片前的预览(TX的面试题)
Aug 20 Javascript
获取当前网页document.url location.href区别总结
May 10 Javascript
javascript 仿QQ滑动菜单效果代码
Sep 03 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
Apr 12 Javascript
Javascript简单改变表单元素背景的方法
Jul 15 Javascript
angularJS 如何读写缓冲的方法(推荐)
Aug 06 Javascript
JavaScript中最容易混淆的作用域、提升、闭包知识详解(推荐)
Sep 05 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
Oct 25 Javascript
使用Node.js给图片加水印的方法
Nov 15 Javascript
vue基于mint-ui的城市选择3级联动的示例
Oct 25 Javascript
详解@Vue/Cli 3 Invalid Host header 错误解决办法
Jan 02 Javascript
Nuxt的动态路由和参数校验操作
Nov 09 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
Jul 17 #Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
Jul 16 #Javascript
node.js express中app.param的用法详解
Jul 16 #Javascript
Node.js中流(stream)的使用方法示例
Jul 16 #Javascript
js+html5实现半透明遮罩层弹框效果
Aug 24 #Javascript
Vue Spa切换页面时更改标题的实例代码
Jul 15 #Javascript
Vue应用部署到服务器的正确方式
Jul 15 #Javascript
You might like
一组PHP可逆加密解密算法实例代码
2014/01/21 PHP
Mac OS下配置PHP+MySql环境
2015/02/25 PHP
PHP实现用session来实现记录用户登陆信息
2018/10/15 PHP
Mootools 1.2教程(3) 数组使用简介
2009/09/14 Javascript
js 与或运算符 || &amp;&amp; 妙用
2009/12/09 Javascript
JavaScript 弹出窗体点击按钮返回选择数据的实现
2010/04/01 Javascript
IE6下focus与blur错乱的解决方案
2011/07/31 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
2014/01/08 Javascript
js获取和设置属性的方法
2014/02/20 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
2014/12/17 Javascript
Javascript中this关键字的一些小知识
2015/03/15 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
2015/11/26 Javascript
简单的js表格操作
2016/09/24 Javascript
Vue.js实现无限加载与分页功能开发
2016/11/03 Javascript
BootStrap 可编辑表Table格
2016/11/24 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
使用travis-ci如何持续部署node.js应用详解
2017/07/30 Javascript
javaScript实现滚动条事件详解
2020/03/24 Javascript
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
基于百度地图api清除指定覆盖物(Overlay)的方法
2018/01/26 Javascript
使用vuex缓存数据并优化自己的vuex-cache
2018/05/30 Javascript
JS实现“全选”和&quot;全不选&quot;功能代码实例
2020/02/06 Javascript
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
解决django同步数据库的时候app models表没有成功创建的问题
2019/08/09 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
2019/08/30 Python
tensorflow实现对张量数据的切片操作方式
2020/01/19 Python
计算机专业毕业生推荐信
2013/11/25 职场文书
中专生自我鉴定书范文
2013/12/28 职场文书
十八届三中全会个人学习材料
2014/02/13 职场文书
运输服务质量承诺书
2014/03/27 职场文书
教师新年寄语
2014/04/03 职场文书
2015年幼儿园德育工作总结
2015/05/25 职场文书
教师见习总结范文
2015/06/23 职场文书
Python词云的正确实现方法实例
2021/05/08 Python
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript