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实现相同内容合并单元格的代码
Jan 12 Javascript
jQuery LigerUI 使用教程表格篇(1)
Jan 18 Javascript
Javascript正则控制文本框只能输入整数或浮点数
Sep 02 Javascript
如何屏蔽防止别的网站嵌入框架代码
Aug 24 Javascript
JS验证邮件地址格式方法小结
Dec 01 Javascript
关于网页中的无缝滚动的js代码
Jun 09 Javascript
jQuery EasyUI菜单与按钮详解
Jul 13 Javascript
适用于手机端的jQuery图片滑块动画
Dec 09 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
Feb 12 Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
Oct 26 Javascript
JavaScript中的高级函数
Jan 04 Javascript
Javascript的this详解
Mar 23 Javascript
解决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
php查找指定目录下指定大小文件的方法
2014/11/28 PHP
PHP命名空间namespace及use的简单用法分析
2018/08/03 PHP
利用jQuery的$.event.fix函数统一浏览器event事件处理
2009/12/21 Javascript
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
JavaScript控制网页平滑滚动到指定元素位置的方法
2015/04/17 Javascript
jquery实现左右无缝轮播图
2020/07/31 Javascript
浅谈JS之tagNaem和nodeName
2016/09/13 Javascript
Bootstrap基本组件学习笔记之进度条(15)
2016/12/08 Javascript
创建一般js对象的几种方式
2017/01/19 Javascript
JS字符串false转boolean的方法(推荐)
2017/03/08 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
jsonp跨域及实现百度首页联想功能的方法
2018/08/30 Javascript
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
2019/08/03 Javascript
python使用str &amp; repr转换字符串
2016/10/13 Python
浅谈python爬虫使用Selenium模拟浏览器行为
2018/02/23 Python
Python切片工具pillow用法示例
2018/03/30 Python
python使用selenium登录QQ邮箱(附带滑动解锁)
2019/01/23 Python
利用Python查看微信共同好友功能的实现代码
2019/04/24 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
2020/03/12 Python
python操作redis数据库的三种方法
2020/09/10 Python
python 简单的调用有道翻译
2020/11/25 Python
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
试解释COMMIT操作和ROLLBACK操作的语义
2014/07/25 面试题
心得体会怎么写
2013/12/30 职场文书
写给老师的表扬信
2014/01/21 职场文书
考试不及格的检讨书
2014/01/22 职场文书
迎国庆横幅标语
2014/10/08 职场文书
经验交流材料格式
2014/12/30 职场文书
公司出纳岗位职责
2015/03/31 职场文书
幼儿园万圣节活动总结
2015/05/05 职场文书
2015年度优秀员工获奖感言
2015/07/31 职场文书
2016年万圣节活动个人总结
2016/04/05 职场文书
导游词之西安大清真寺
2019/12/17 职场文书
mysql left join快速转inner join的过程
2021/06/30 MySQL
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS