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 相关文章推荐
Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
Sep 12 Javascript
40个有创意的jQuery图片、内容滑动及弹出插件收藏集之一
Dec 31 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
Jul 14 Javascript
jQuery中slice()方法用法实例
Jan 07 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
Jun 29 Javascript
HTML页面定时跳转方法解析(2种任选)
Dec 22 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
Mar 13 Javascript
详解js的作用域、预解析机制
Feb 05 Javascript
Js中使用正则表达式验证输入是否有特殊字符
Sep 07 Javascript
JavaScript多种页面刷新方法小结
Apr 04 Javascript
vue实现日历备忘录功能
Sep 24 Javascript
vue使用swiper实现左右滑动切换图片
Oct 16 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
五款常用mysql slow log分析工具的比较分析
2011/05/22 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
浅谈php函数serialize()与unserialize()的使用方法
2014/08/19 PHP
php连接odbc数据源并保存与查询数据的方法
2014/12/24 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
2017/06/07 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
javascript与cookie 的问题详解
2013/11/11 Javascript
一个js导致的jquery失效问题的解决方法
2013/11/27 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
基于javascript实现精确到毫秒的倒计时限时抢购
2016/04/17 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
详解ECharts使用心得总结
2016/12/06 Javascript
BootStrap 动态表单效果
2017/06/02 Javascript
解决Jquery下拉框数据动态获取的问题
2018/01/25 jQuery
详解ajax的data参数错误导致页面崩溃
2018/04/30 Javascript
JavaScript格式化json和xml的方法示例
2019/01/22 Javascript
微信小程序实现多个按钮的颜色状态转换
2019/02/15 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
JS实现的简单tab切换功能完整示例
2019/06/20 Javascript
[02:12]2015国际邀请赛 SHOWOPEN
2015/08/05 DOTA
python让图片按照exif信息里的创建时间进行排序的方法
2015/03/16 Python
Python实现处理管道的方法
2015/06/04 Python
利用Python代码实现数据可视化的5种方法详解
2018/03/25 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
python库matplotlib绘制坐标图
2019/10/18 Python
Python requests获取网页常用方法解析
2020/02/20 Python
python连接mysql有哪些方法
2020/06/24 Python
美国睫毛、眉毛精华液领导品牌:RevitaLash Cosmetics
2018/03/26 全球购物
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
作风转变心得体会
2014/09/02 职场文书
庆祝国庆节演讲稿2014
2014/09/19 职场文书
首次购房证明
2015/06/19 职场文书
会议新闻稿
2015/07/17 职场文书
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android
windows10声卡驱动怎么安装?win10声卡驱动安装操作步骤教程
2022/08/05 数码科技