JavaScript实现图片放大预览效果


Posted in Javascript onNovember 02, 2020

代码实现:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .preview-img {
      position: relative;
      height: 398px;
    }
    
    .mask {
      display: none;
      position: absolute;
      top: 0;
      left: 0;
      width: 300px;
      height: 300px;
      background-color: skyblue;
      opacity: .4;
      border: 1px solid #ccc;
      cursor: move;
    }
    
    .big {
      overflow: hidden;
      display: none;
      position: absolute;
      top: 0;
      left: 410px;
      width: 500px;
      height: 500px;
      background-color: pink;
      z-index: 99;
      border: 1px solid #ccc;
    }
    
    .big img {
      position: absolute;
      top: 0;
      left: 0;
    }
  </style>
</head>

<body>
  <script>
    window.addEventListener('load', function() {
      var preview_img = document.querySelector('.preview-img');
      var mask = document.querySelector('.mask');
      var big = document.querySelector('.big');
      // 显示与隐藏
      preview_img.addEventListener('mouseover', function() {
        mask.style.display = 'block';
        big.style.display = 'block';
      });
      preview_img.addEventListener('mouseout', function() {
        mask.style.display = 'none';
        big.style.display = 'none';
      });
      // 盒子跟随鼠标移动
      preview_img.addEventListener('mousemove', function(e) {
        var x = e.pageX - this.offsetLeft;
        var y = e.pageY - this.offsetTop;
        var maskX = x - mask.offsetWidth / 2;
        var maskY = y - mask.offsetHeight / 2;
        var maskMax = preview_img.offsetHeight - mask.offsetHeight;
        if (maskX <= 0) {
          maskX = 0;
        } else if (maskX >= maskMax) {
          maskX = maskMax;
        }
        if (maskY <= 0) {
          maskY = 0;
        } else if (maskY >= maskMax) {
          maskY = maskMax;
        }
        mask.style.left = maskX + 'px';
        mask.style.top = maskY + 'px';

        // 大图,根据比例计算坐标
        var bigImg = document.querySelector('.bigImg');
        var bigMax = bigImg.offsetWidth - big.offsetWidth;
        var bigX = bigMax * maskX / maskMax;
        var bigY = bigMax * maskY / maskMax;
        bigImg.style.left = -bigX + 'px';
        bigImg.style.top = -bigY + 'px';
      });
    });
  </script>
  <div class="preview-img">
    <img src="https://s1.ax1x.com/2020/10/12/027yRg.jpg" alt="">
    <div class="mask"></div>
    <div class="big">
      <img src="https://s1.ax1x.com/2020/10/12/0276zQ.jpg" alt="" class="bigImg">
    </div>
  </div>
</body>

</html>

实现效果:

JavaScript实现图片放大预览效果

以上就是JavaScript实现图片放大预览效果的详细内容,更多关于JavaScript 图片放大的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
jQuery(非HTML5)可编辑表格实现代码
Dec 11 Javascript
JQuery AJAX 中文乱码问题解决
Jun 05 Javascript
几种延迟加载JS代码的方法加快网页的访问速度
Oct 12 Javascript
javascript瀑布流式图片懒加载实例解析与优化
Feb 23 Javascript
详解JavaScript RegExp对象
Feb 04 Javascript
JS和canvas实现俄罗斯方块
Mar 14 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
Mar 30 Javascript
vue拦截器Vue.http.interceptors.push使用详解
Apr 22 Javascript
Vue EventBus自定义组件事件传递
Jun 25 Javascript
vue实现的双向数据绑定操作示例
Dec 04 Javascript
使用Node.js写一个代码生成器的方法步骤
May 10 Javascript
通过jQuery学习js类型判断的技巧
May 27 jQuery
解决antd 表单设置默认值initialValue后验证失效的问题
Nov 02 #Javascript
在antd4.0中Form使用initialValue操作
Nov 02 #Javascript
vue+iview使用树形控件的具体使用
Nov 02 #Javascript
在antd Form表单中select设置初始值操作
Nov 02 #Javascript
react+antd 递归实现树状目录操作
Nov 02 #Javascript
antd form表单数据回显操作
Nov 02 #Javascript
antd Select下拉菜单动态添加option里的内容操作
Nov 02 #Javascript
You might like
实例(Smarty+FCKeditor新闻系统)
2007/01/02 PHP
php抓取https的内容的代码
2010/04/06 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
2012/08/06 PHP
php通过asort()给关联数组按照值排序的方法
2015/03/18 PHP
用Javascript数组处理多个字符串的连接问题
2009/08/20 Javascript
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
JavaScript实现关键字高亮功能
2014/11/12 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
2015/04/06 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
Bootstrap下拉菜单Dropdowns的实现代码
2017/03/17 Javascript
javascript 判断用户有没有操作页面
2017/10/17 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
理解Koa2中的async&amp;await的用法
2018/02/05 Javascript
详解vue 图片上传功能
2019/04/30 Javascript
vue-cli3项目展示本地Markdown文件的方法
2019/06/07 Javascript
Python中的特殊语法:filter、map、reduce、lambda介绍
2015/04/14 Python
Python使用pyh生成HTML文档的方法示例
2018/03/10 Python
python使用requests模块实现爬取电影天堂最新电影信息
2019/04/03 Python
python爬虫 Pyppeteer使用方法解析
2019/09/28 Python
python读取图片的几种方式及图像宽和高的存储顺序
2020/02/11 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
OpenCV Python实现拼图小游戏
2020/03/23 Python
Python中zipfile压缩文件模块的基本使用教程
2020/06/14 Python
python xlsxwriter模块的使用
2020/12/24 Python
HTML5本地存储之IndexedDB
2017/06/16 HTML / CSS
c语言常见笔试题总结
2016/09/05 面试题
2014年公司迎新年活动方案
2014/02/24 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
大客户经理岗位职责
2015/04/09 职场文书
python-for x in range的用法(注意要点、细节)
2021/05/10 Python
Python OpenCV实现传统图片格式与base64转换
2021/06/13 Python
CSS 鼠标点击拖拽效果的实现代码
2022/12/24 HTML / CSS