js仿淘宝放大镜效果


Posted in Javascript onDecember 28, 2020

仿淘宝放大镜封装效果,供大家参考,具体内容如下

放大镜是做好了,但是没有下面小型导航无法选择放大图片,后期我会在封装出来的。由于考试当前 考完试我会在推出vue的放大效果。以下是代码:

1.html代码

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <link href="css/index.css" rel="stylesheet">

</head>
<body>
<div class="magnify">
 <div class="magnify_conatiner">
 <div class="magnify_preview">
  <img class="sizeimg" src="../../../image/1.jpg" alt="">
  <div class="magnif_mask"></div>
  <div class="margnif_big">
  <img class="bigImg" src="../../../image/1.jpg" alt="">
  </div>
 </div>

 </div>
</div>
</div>
<script src="js/index.js"></script>
<script>

 var list = {
 BackgroundColor:'red',//遮罩层 颜色 必填
 Opacity:0.2,//遮罩层透明度 随意
 size:1.5 //放大倍数 必填

 }
 init(list)
 
</script>

</body>
</html>

2.css代码

.magnify_conatiner {
 width: 500px;
 height: 500px;
 margin: 50px 50px;
}

.magnify_conatiner .magnify_preview {
 position: relative;
 height: 400px;
 border: 1px silver solid;
 background-color: red;

}
div.magnify_preview .sizeimg {
 height: 100%;
 width: 100%;
}
.magnify_conatiner .magnify_preview .magnif_mask{
 position: absolute;
 top: 0;
 left: 0;
 opacity: .5;
 border: 1px solid #ccc;
 cursor: move;
 display: none;
}
.margnif_big{
 position: absolute;
 display: none;
 top: 0px;
 left: 501px;
 width: 450px;
 height: 450px;
 z-index: 999;
 border: 1px solid #ccc;
 overflow: hidden;
}
.margnif_big img{
 position: absolute;
 top: 0;
 left: 0;
}

3.封装的 js代码

function init(obj) {

 if (obj.BackgroundColor && obj.size) {
 var maskBigColor = obj.BackgroundColor
 var maskSize = obj.size
 var maskOpacity = obj.Opacity
 if(maskOpacity === undefined){
  maskOpacity = 0.2
 }
 var magnify_preview = document.querySelector('.magnify_preview')
 var mask = document.querySelector('.magnif_mask')
 var big = document.querySelector('.margnif_big')
 var bigIMG = document.querySelector('.bigImg')
 mask.style.height = obj.size * 100 + 'px'
 mask.style.width = obj.size * 100 + 'px'
 mask.style.backgroundColor = obj.BackgroundColor
 mask.style.opacity = maskOpacity
 magnify_preview.addEventListener('mouseover', function () {
  mask.style.display = 'block'
  big.style.display = 'block'

 })
 magnify_preview.addEventListener('mouseout', function () {
  mask.style.display = 'none'
  big.style.display = 'none'

 })
 magnify_preview.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 magnify_previewX = magnify_preview.offsetWidth
  var magnify_previewY = magnify_preview.offsetHeight
  var maskMaxX = magnify_preview.offsetWidth - mask.offsetWidth
  var maskMaxY = magnify_preview.offsetHeight - mask.offsetHeight
  if (maskX <= 0) {
  maskX = 0
  } else if (maskX >= magnify_previewX - mask.offsetWidth) {
  maskX = magnify_previewX - mask.offsetWidth
  }
  if (maskY <= 0) {
  maskY = 0
  } else if (maskY >= magnify_previewY - mask.offsetHeight) {
  maskY = magnify_previewY - mask.offsetHeight
  }
  mask.style.left = maskX + 'px'
  mask.style.top = maskY + 'px'

//大图片的移动距离 = 遮挡层的移动距离*大图片最大移动距离 / 遮挡层最大移动距离


  var bigMaxX = bigIMG.offsetWidth - big.offsetWidth
  var bigImgY = bigIMG.offsetHeight - big.offsetHeight
  var bigX = maskX * bigMaxX / maskMaxX
  var bigY = maskY * bigImgY / maskMaxY

  bigIMG.style.left = - bigX + 'px'
  bigIMG.style.top = - bigY + 'px'

 })


 } else {
 console.log('error')
 }

}

后期考完试我会继续的,图片大家自己更改吧,我没有用网图

效果展示

js仿淘宝放大镜效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 绑定带参数的事件以及手动触发事件
Apr 27 Javascript
AeroWindow 基于JQuery的弹出窗口插件
Jun 27 Javascript
javascript中 try catch用法
Aug 16 Javascript
javascript中字体浮动效果的简单实例演示
Nov 18 Javascript
jQuery提示插件qTip2用法分析(支持ajax及多种样式)
Jun 08 Javascript
JS中使用FormData上传文件、图片的方法
Aug 07 Javascript
Javascript实现图片懒加载插件的方法
Oct 20 Javascript
Angular页面间切换及传值的4种方法
Nov 04 Javascript
原生js编写基于面向对象的分页组件
Dec 05 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
Aug 13 Javascript
angular 用Observable实现异步调用的方法
Dec 27 Javascript
JavaScript async/await原理及实例解析
Dec 02 Javascript
JavaScript实现原型封装轮播图
Dec 27 #Javascript
JavaScript代码实现简单计算器
Dec 27 #Javascript
JavaScript实现雪花飘落效果
Dec 27 #Javascript
微信小程序自定义胶囊样式
Dec 27 #Javascript
JS实现鼠标移动拖尾
Dec 27 #Javascript
JavaScript实现滚动加载更多
Dec 27 #Javascript
jQuery实现简单轮播图效果
Dec 27 #jQuery
You might like
php二维数组排序详解
2013/11/06 PHP
PHP实现断点续传乱序合并文件的方法
2018/09/06 PHP
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
javascript数组去掉重复
2011/05/12 Javascript
JavaScript cookie的设置获取删除详解
2014/02/11 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
jQuery.form插件的使用及跨域异步上传文件
2016/04/27 Javascript
微信小程序 PHP后端form表单提交实例详解
2017/01/12 Javascript
js遍历获取表格内数据的方法(必看)
2017/04/06 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
2017/06/12 Javascript
JavaScript实现图片切换效果
2017/08/12 Javascript
AngularJS发送异步Get/Post请求方法
2018/08/13 Javascript
React+TypeScript+webpack4多入口配置详解
2019/08/08 Javascript
vue动态循环出的多个select出现过的变为disabled(实例代码)
2019/11/10 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
2019/11/13 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
[01:23:35]Ti4主赛事胜者组 DK vs EG 1
2014/07/19 DOTA
Python多进程并发(multiprocessing)用法实例详解
2015/06/02 Python
python利用装饰器进行运算的实例分析
2015/08/04 Python
简单了解python中的f.b.u.r函数
2019/11/02 Python
Python实现把多维数组展开成DataFrame
2019/11/30 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
Python检测端口IP字符串是否合法
2020/06/05 Python
python Paramiko使用示例
2020/09/21 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
贪睡宠物用品:Snoozer Pet Products
2020/02/04 全球购物
Can a struct inherit from another class? (结构体能继承类吗)
2014/07/22 面试题
Ajax实现页面无刷新留言效果
2021/03/24 Javascript
应届生污水处理求职信
2013/11/06 职场文书
十佳教师事迹材料
2014/01/11 职场文书
2014年自愿离婚协议书范本
2014/09/25 职场文书
2015中学教师个人工作总结
2015/07/22 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
MySQL下载安装配置详细教程 附下载资源
2022/09/23 MySQL