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 相关文章推荐
javascript cookies操作集合
Apr 12 Javascript
JavaScript 内置对象属性及方法集合
Jul 04 Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
Apr 26 Javascript
利用Keydown事件阻止用户输入实现代码
Mar 11 Javascript
jQuery实现淡入淡出二级下拉导航菜单的方法
Aug 28 Javascript
在Ubuntu系统上安装Node.JS的教程
Oct 15 Javascript
微信小程序 简单教程实例详解
Jan 13 Javascript
jQuery easyui datagird编辑行删除行功能的实现代码
Sep 20 jQuery
原生JS实现列表内容自动向上滚动效果
May 22 Javascript
js实现点击上传图片并设为模糊背景
Aug 02 Javascript
在项目vue中使用echarts的操作步骤
Sep 07 Javascript
JavaScript实现音乐导航效果
Nov 19 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小白必须要知道的php基础知识(超实用)
2017/10/10 PHP
PHP实现的简单路由和类自动加载功能
2018/03/13 PHP
javascript 写类方式之二
2009/07/05 Javascript
JQuery从头学起第三讲
2010/07/06 Javascript
说明你的Javascript技术很烂的五个原因
2011/04/26 Javascript
js常用代码段整理
2011/11/30 Javascript
js实现的tab标签切换效果代码分享
2015/08/25 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
2015/12/07 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
2016/06/07 Javascript
探讨AngularJs中ui.route的简单应用
2016/11/16 Javascript
jQuery实现弹出窗口弹出div层的实例代码
2017/01/09 Javascript
JavaScript 数据类型详解
2017/03/13 Javascript
javaScript canvas实现(画笔大小 颜色 橡皮的实例)
2017/11/28 Javascript
将jquery.qqFace.js表情转换成微信的字符码
2017/12/01 jQuery
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
Vue 使用formData方式向后台发送数据的实现
2019/04/14 Javascript
javascript实现留言板功能
2020/02/08 Javascript
记一次react前端项目打包优化的方法
2020/03/30 Javascript
详解vue 组件的实现原理
2020/11/12 Javascript
python利用elaphe制作二维条形码实现代码
2012/05/25 Python
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
利用python将图片转换成excel文档格式
2017/12/30 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
2019/10/18 Python
如何关掉pycharm中的python console(图解)
2019/10/31 Python
python被修饰的函数消失问题解决(基于wraps函数)
2019/11/04 Python
在notepad++中实现直接运行python代码
2019/12/18 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
python3获取控制台输入的数据的具体实例
2020/08/16 Python
Python urllib3软件包的使用说明
2020/11/18 Python
德国购买门票网站:ADticket.de
2019/10/31 全球购物
计算机本科生自荐信
2013/10/15 职场文书
历史专业个人求职信分享
2013/12/20 职场文书
建筑设计学生的自我评价
2014/01/16 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
寻衅滋事罪辩护词
2015/05/21 职场文书